mirror of https://github.com/ARMmbed/mbed-os.git
commit
cf87e7d182
|
@ -30,7 +30,7 @@ from tools.build_api import scan_resources
|
|||
from tools.toolchains import Resources
|
||||
from tools.export import lpcxpresso, ds5_5, iar, makefile
|
||||
from tools.export import embitz, coide, kds, simplicity, atmelstudio
|
||||
from tools.export import sw4stm32, e2studio, zip, cmsis, uvision, cdt
|
||||
from tools.export import sw4stm32, e2studio, zip, cmsis, uvision, cdt, vscode
|
||||
from tools.export import gnuarmeclipse
|
||||
from tools.export import qtcreator
|
||||
from tools.targets import TARGET_NAMES
|
||||
|
@ -58,7 +58,10 @@ EXPORTERS = {
|
|||
'gnuarmeclipse': gnuarmeclipse.GNUARMEclipse,
|
||||
'qtcreator': qtcreator.QtCreator,
|
||||
'zip' : zip.ZIP,
|
||||
'cmsis' : cmsis.CMSIS
|
||||
'cmsis' : cmsis.CMSIS,
|
||||
'vscode_gcc_arm' : vscode.VSCodeGcc,
|
||||
'vscode_iar' : vscode.VSCodeIAR,
|
||||
'vscode_armc5' : vscode.VSCodeArmc5
|
||||
}
|
||||
|
||||
ERROR_MESSAGE_UNSUPPORTED_TOOLCHAIN = """
|
||||
|
|
|
@ -0,0 +1,95 @@
|
|||
# mbed SDK
|
||||
# Copyright (c) 2011-2016 ARM Limited
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from os.path import join, exists, realpath, relpath, basename, isfile, splitext
|
||||
from os import makedirs, listdir
|
||||
import json
|
||||
|
||||
from tools.export.makefile import Makefile, GccArm, Armc5, IAR
|
||||
|
||||
class VSCode(Makefile):
|
||||
"""Generic VSCode project. Intended to be subclassed by classes that
|
||||
specify a type of Makefile.
|
||||
"""
|
||||
def generate(self):
|
||||
"""Generate Makefile and VSCode launch and task files
|
||||
"""
|
||||
super(VSCode, self).generate()
|
||||
ctx = {
|
||||
'name': self.project_name,
|
||||
'elf_location': join('BUILD', self.project_name)+'.elf',
|
||||
'c_symbols': self.toolchain.get_symbols(),
|
||||
'asm_symbols': self.toolchain.get_symbols(True),
|
||||
'target': self.target,
|
||||
'include_paths': self.resources.inc_dirs,
|
||||
'load_exe': str(self.LOAD_EXE).lower()
|
||||
}
|
||||
|
||||
if not exists(join(self.export_dir, '.vscode')):
|
||||
makedirs(join(self.export_dir, '.vscode'))
|
||||
|
||||
self.gen_file('vscode/tasks.tmpl', ctx,
|
||||
join('.vscode', 'tasks.json'))
|
||||
self.gen_file('vscode/launch.tmpl', ctx,
|
||||
join('.vscode', 'launch.json'))
|
||||
self.gen_file('vscode/settings.tmpl', ctx,
|
||||
join('.vscode', 'settings.json'))
|
||||
|
||||
# So.... I want all .h and .hpp files in self.resources.inc_dirs
|
||||
all_directories = []
|
||||
|
||||
for directory in self.resources.inc_dirs:
|
||||
if not directory:
|
||||
continue
|
||||
|
||||
if directory == ".":
|
||||
all_directories.append("${workspaceRoot}/*")
|
||||
else:
|
||||
all_directories.append(directory.replace("./", "${workspaceRoot}/") + "/*")
|
||||
|
||||
cpp_props = {
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Windows",
|
||||
"includePath": [x.replace("/", "\\") for x in all_directories]
|
||||
},
|
||||
{
|
||||
"name": "Mac",
|
||||
"includePath": all_directories
|
||||
},
|
||||
{
|
||||
"name": "Linux",
|
||||
"includePath": all_directories
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
with open(join(self.export_dir, '.vscode', 'c_cpp_properties.json'), 'w') as outfile:
|
||||
json.dump(cpp_props, outfile, indent=4, separators=(',', ': '))
|
||||
|
||||
|
||||
class VSCodeGcc(VSCode, GccArm):
|
||||
LOAD_EXE = True
|
||||
NAME = "VSCode-GCC-ARM"
|
||||
|
||||
class VSCodeArmc5(VSCode, Armc5):
|
||||
LOAD_EXE = True
|
||||
NAME = "VSCode-Armc5"
|
||||
|
||||
class VSCodeIAR(VSCode, IAR):
|
||||
LOAD_EXE = True
|
||||
NAME = "VSCode-IAR"
|
||||
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "C++ Launch",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"program": "${workspaceRoot}/BUILD/${workspaceRootFolderName}.elf",
|
||||
"args": [],
|
||||
"stopAtEntry": true,
|
||||
"cwd": "${workspaceRoot}",
|
||||
"environment": [],
|
||||
"externalConsole": false,
|
||||
"debugServerArgs": "",
|
||||
"serverLaunchTimeout": 20000,
|
||||
"filterStderr": true,
|
||||
"filterStdout": false,
|
||||
"serverStarted": "GDB\\ server\\ started",
|
||||
"preLaunchTask": "make",
|
||||
"setupCommands": [
|
||||
{ "text": "-target-select remote localhost:3333", "description": "connect to target", "ignoreFailures": false },
|
||||
{ "text": "-file-exec-and-symbols ${workspaceRoot}/BUILD/${workspaceRootFolderName}.elf", "description": "load file", "ignoreFailures": false},
|
||||
{ "text": "-interpreter-exec console \"monitor endian little\"", "ignoreFailures": false },
|
||||
{ "text": "-interpreter-exec console \"monitor reset\"", "ignoreFailures": false },
|
||||
{ "text": "-interpreter-exec console \"monitor halt\"", "ignoreFailures": false },
|
||||
{ "text": "-interpreter-exec console \"monitor arm semihosting enable\"", "ignoreFailures": false },
|
||||
{ "text": "-target-download", "description": "flash target", "ignoreFailures": false }
|
||||
],
|
||||
"logging": {
|
||||
"moduleLoad": true,
|
||||
"trace": true,
|
||||
"engineLogging": true,
|
||||
"programOutput": true,
|
||||
"exceptions": true
|
||||
},
|
||||
"linux": {
|
||||
"MIMode": "gdb",
|
||||
"MIDebuggerPath": "/usr/bin/arm-none-eabi-gdb",
|
||||
"debugServerPath": "pyocd-gdbserver"
|
||||
},
|
||||
"osx": {
|
||||
"MIMode": "gdb",
|
||||
"MIDebuggerPath": "/usr/local/bin/arm-none-eabi-gdb",
|
||||
"debugServerPath": "pyocd-gdbserver"
|
||||
},
|
||||
"windows": {
|
||||
"preLaunchTask": "make.exe",
|
||||
"MIMode": "gdb",
|
||||
"MIDebuggerPath": "C:\\Program Files (x86)\\GNU Tools ARM Embedded\\4.9 2015q3\\bin\\arm-none-eabi-gdb.exe",
|
||||
"debugServerPath": "pyocd-gdbserver.exe",
|
||||
"setupCommands": [
|
||||
{ "text": "-environment-cd ${workspaceRoot}\\BUILD" },
|
||||
{ "text": "-target-select remote localhost:3333", "description": "connect to target", "ignoreFailures": false },
|
||||
{ "text": "-file-exec-and-symbols ${workspaceRootFolderName}.elf", "description": "load file", "ignoreFailures": false},
|
||||
{ "text": "-interpreter-exec console \"monitor endian little\"", "ignoreFailures": false },
|
||||
{ "text": "-interpreter-exec console \"monitor reset\"", "ignoreFailures": false },
|
||||
{ "text": "-interpreter-exec console \"monitor halt\"", "ignoreFailures": false },
|
||||
{ "text": "-interpreter-exec console \"monitor arm semihosting enable\"", "ignoreFailures": false },
|
||||
{ "text": "-target-download", "description": "flash target", "ignoreFailures": false }
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
// Place your settings in this file to overwrite default and user settings.
|
||||
{
|
||||
"C_Cpp.addWorkspaceRootToIncludePath": false
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||
// for the documentation about the tasks.json format
|
||||
"version": "0.1.0",
|
||||
"name": "make",
|
||||
"isShellCommand": true,
|
||||
"showOutput": "always",
|
||||
"problemMatcher": {
|
||||
"owner": "cpp",
|
||||
"fileLocation": ["relative", "${workspaceRoot}/mbed-os"],
|
||||
"pattern": {
|
||||
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"column": 3,
|
||||
"severity": 4,
|
||||
"message": 5
|
||||
}
|
||||
},
|
||||
"args": ["-j"],
|
||||
"linux": {
|
||||
"command": "make"
|
||||
},
|
||||
"osx": {
|
||||
"command": "make"
|
||||
},
|
||||
"windows": {
|
||||
"command": "make.exe"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue