mbed-os

Dependents:   cobaLCDJoyMotor_Thread odometry_omni_3roda_v3 odometry_omni_3roda_v1 odometry_omni_3roda_v2 ... more

Committer:
be_bryan
Date:
Mon Dec 11 17:54:04 2017 +0000
Revision:
0:b74591d5ab33
motor ++

Who changed what in which revision?

UserRevisionLine numberNew contents of line
be_bryan 0:b74591d5ab33 1 # mbed SDK
be_bryan 0:b74591d5ab33 2 # Copyright (c) 2011-2016 ARM Limited
be_bryan 0:b74591d5ab33 3 #
be_bryan 0:b74591d5ab33 4 # Licensed under the Apache License, Version 2.0 (the "License");
be_bryan 0:b74591d5ab33 5 # you may not use this file except in compliance with the License.
be_bryan 0:b74591d5ab33 6 # You may obtain a copy of the License at
be_bryan 0:b74591d5ab33 7 #
be_bryan 0:b74591d5ab33 8 # http://www.apache.org/licenses/LICENSE-2.0
be_bryan 0:b74591d5ab33 9 #
be_bryan 0:b74591d5ab33 10 # Unless required by applicable law or agreed to in writing, software
be_bryan 0:b74591d5ab33 11 # distributed under the License is distributed on an "AS IS" BASIS,
be_bryan 0:b74591d5ab33 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
be_bryan 0:b74591d5ab33 13 # See the License for the specific language governing permissions and
be_bryan 0:b74591d5ab33 14 # limitations under the License.
be_bryan 0:b74591d5ab33 15
be_bryan 0:b74591d5ab33 16 from os.path import join, exists, realpath, relpath, basename, isfile, splitext
be_bryan 0:b74591d5ab33 17 from os import makedirs, listdir
be_bryan 0:b74591d5ab33 18 import json
be_bryan 0:b74591d5ab33 19
be_bryan 0:b74591d5ab33 20 from tools.export.makefile import Makefile, GccArm, Armc5, IAR
be_bryan 0:b74591d5ab33 21
be_bryan 0:b74591d5ab33 22 class VSCode(Makefile):
be_bryan 0:b74591d5ab33 23 """Generic VSCode project. Intended to be subclassed by classes that
be_bryan 0:b74591d5ab33 24 specify a type of Makefile.
be_bryan 0:b74591d5ab33 25 """
be_bryan 0:b74591d5ab33 26 def generate(self):
be_bryan 0:b74591d5ab33 27 """Generate Makefile and VSCode launch and task files
be_bryan 0:b74591d5ab33 28 """
be_bryan 0:b74591d5ab33 29 super(VSCode, self).generate()
be_bryan 0:b74591d5ab33 30 ctx = {
be_bryan 0:b74591d5ab33 31 'name': self.project_name,
be_bryan 0:b74591d5ab33 32 'elf_location': join('BUILD', self.project_name)+'.elf',
be_bryan 0:b74591d5ab33 33 'c_symbols': self.toolchain.get_symbols(),
be_bryan 0:b74591d5ab33 34 'asm_symbols': self.toolchain.get_symbols(True),
be_bryan 0:b74591d5ab33 35 'target': self.target,
be_bryan 0:b74591d5ab33 36 'include_paths': self.resources.inc_dirs,
be_bryan 0:b74591d5ab33 37 'load_exe': str(self.LOAD_EXE).lower()
be_bryan 0:b74591d5ab33 38 }
be_bryan 0:b74591d5ab33 39
be_bryan 0:b74591d5ab33 40 if not exists(join(self.export_dir, '.vscode')):
be_bryan 0:b74591d5ab33 41 makedirs(join(self.export_dir, '.vscode'))
be_bryan 0:b74591d5ab33 42
be_bryan 0:b74591d5ab33 43 self.gen_file('vscode/tasks.tmpl', ctx,
be_bryan 0:b74591d5ab33 44 join('.vscode', 'tasks.json'))
be_bryan 0:b74591d5ab33 45 self.gen_file('vscode/launch.tmpl', ctx,
be_bryan 0:b74591d5ab33 46 join('.vscode', 'launch.json'))
be_bryan 0:b74591d5ab33 47 self.gen_file('vscode/settings.tmpl', ctx,
be_bryan 0:b74591d5ab33 48 join('.vscode', 'settings.json'))
be_bryan 0:b74591d5ab33 49
be_bryan 0:b74591d5ab33 50 # So.... I want all .h and .hpp files in self.resources.inc_dirs
be_bryan 0:b74591d5ab33 51 all_directories = []
be_bryan 0:b74591d5ab33 52
be_bryan 0:b74591d5ab33 53 for directory in self.resources.inc_dirs:
be_bryan 0:b74591d5ab33 54 if not directory:
be_bryan 0:b74591d5ab33 55 continue
be_bryan 0:b74591d5ab33 56
be_bryan 0:b74591d5ab33 57 if directory == ".":
be_bryan 0:b74591d5ab33 58 all_directories.append("${workspaceRoot}/*")
be_bryan 0:b74591d5ab33 59 else:
be_bryan 0:b74591d5ab33 60 all_directories.append(directory.replace("./", "${workspaceRoot}/") + "/*")
be_bryan 0:b74591d5ab33 61
be_bryan 0:b74591d5ab33 62 cpp_props = {
be_bryan 0:b74591d5ab33 63 "configurations": [
be_bryan 0:b74591d5ab33 64 {
be_bryan 0:b74591d5ab33 65 "name": "Windows",
be_bryan 0:b74591d5ab33 66 "includePath": [x.replace("/", "\\") for x in all_directories],
be_bryan 0:b74591d5ab33 67 "defines": [symbol for symbol in self.toolchain.get_symbols()]
be_bryan 0:b74591d5ab33 68 },
be_bryan 0:b74591d5ab33 69 {
be_bryan 0:b74591d5ab33 70 "name": "Mac",
be_bryan 0:b74591d5ab33 71 "includePath": all_directories,
be_bryan 0:b74591d5ab33 72 "defines": [symbol for symbol in self.toolchain.get_symbols()]
be_bryan 0:b74591d5ab33 73 },
be_bryan 0:b74591d5ab33 74 {
be_bryan 0:b74591d5ab33 75 "name": "Linux",
be_bryan 0:b74591d5ab33 76 "includePath": all_directories,
be_bryan 0:b74591d5ab33 77 "defines": [symbol for symbol in self.toolchain.get_symbols()]
be_bryan 0:b74591d5ab33 78 }
be_bryan 0:b74591d5ab33 79 ]
be_bryan 0:b74591d5ab33 80 }
be_bryan 0:b74591d5ab33 81
be_bryan 0:b74591d5ab33 82 with open(join(self.export_dir, '.vscode', 'c_cpp_properties.json'), 'w') as outfile:
be_bryan 0:b74591d5ab33 83 json.dump(cpp_props, outfile, indent=4, separators=(',', ': '))
be_bryan 0:b74591d5ab33 84
be_bryan 0:b74591d5ab33 85
be_bryan 0:b74591d5ab33 86 class VSCodeGcc(VSCode, GccArm):
be_bryan 0:b74591d5ab33 87 LOAD_EXE = True
be_bryan 0:b74591d5ab33 88 NAME = "VSCode-GCC-ARM"
be_bryan 0:b74591d5ab33 89
be_bryan 0:b74591d5ab33 90 class VSCodeArmc5(VSCode, Armc5):
be_bryan 0:b74591d5ab33 91 LOAD_EXE = True
be_bryan 0:b74591d5ab33 92 NAME = "VSCode-Armc5"
be_bryan 0:b74591d5ab33 93
be_bryan 0:b74591d5ab33 94 class VSCodeIAR(VSCode, IAR):
be_bryan 0:b74591d5ab33 95 LOAD_EXE = True
be_bryan 0:b74591d5ab33 96 NAME = "VSCode-IAR"
be_bryan 0:b74591d5ab33 97
be_bryan 0:b74591d5ab33 98