Clone of official tools
Diff: export/embitz/__init__.py
- Revision:
- 35:da9c89f8be7d
- Child:
- 36:96847d42f010
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/export/embitz/__init__.py Wed Feb 15 13:53:18 2017 -0600 @@ -0,0 +1,79 @@ +""" +mbed SDK +Copyright (c) 2014-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 splitext, basename +from tools.targets import TARGET_MAP +from tools.export.exporters import Exporter + +class EmBitz(Exporter): + NAME = 'EmBitz' + TOOLCHAIN = 'GCC_ARM' + + TARGETS = [target for target, obj in TARGET_MAP.iteritems() + if "GCC_ARM" in obj.supported_toolchains] + + MBED_CONFIG_HEADER_SUPPORTED = True + + FILE_TYPES = { + 'headers': 'h', + 'c_sources': 'c', + 's_sources': 'a', + 'cpp_sources': 'cpp' + } + + + @staticmethod + def _remove_symbols(sym_list): + return [s for s in sym_list if not s.startswith("-D")] + + def generate(self): + self.resources.win_to_unix() + source_files = [] + for r_type, n in self.FILE_TYPES.iteritems(): + for file in getattr(self.resources, r_type): + source_files.append({ + 'name': file, 'type': n + }) + + libraries = [] + for lib in self.resources.libraries: + l, _ = splitext(basename(lib)) + libraries.append(l[3:]) + + + if self.resources.linker_script is None: + self.resources.linker_script = '' + + ctx = { + 'name': self.project_name, + 'target': self.target, + 'toolchain': self.toolchain.name, + 'source_files': source_files, + 'include_paths': self.resources.inc_dirs, + 'script_file': self.resources.linker_script, + 'library_paths': self.resources.lib_dirs, + 'libraries': libraries, + 'symbols': self.toolchain.get_symbols(), + 'object_files': self.resources.objects, + 'sys_libs': self.toolchain.sys_libs, + 'cc_org': (self.flags['common_flags'] + + self._remove_symbols(self.flags['c_flags'])), + 'ld_org': self.flags['ld_flags'], + 'cppc_org': (self.flags['common_flags'] + + self._remove_symbols(self.flags['cxx_flags'])) + } + + self.gen_file('embitz/eix.tmpl', ctx, '%s.eix' % self.project_name)