Clone of official tools

Revision:
35:da9c89f8be7d
Parent:
34:42f20e28adf5
Child:
36:96847d42f010
diff -r 42f20e28adf5 -r da9c89f8be7d export/simplicityv3.py
--- a/export/simplicityv3.py	Mon Feb 13 09:29:13 2017 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,194 +0,0 @@
-"""
-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 exporters import Exporter
-from os.path import split,splitext, basename
-
-class Folder:
-    def __init__(self, name):
-        self.name = name
-        self.children = []
-
-    def contains(self, folderName):
-        for child in self.children:
-            if child.name == folderName:
-                return True
-        return False
-
-    def __str__(self):
-        retval = self.name + " "
-        if len(self.children) > 0:
-            retval += "[ "
-            for child in self.children:
-                retval += child.__str__()
-            retval += " ]"
-
-        return retval
-
-    def findChild(self, folderName):
-        for child in self.children:
-            if child.name == folderName:
-                return child
-        return None
-
-    def addChild(self, folderName):
-        if folderName == '':
-            return None
-
-        if not self.contains(folderName):
-            self.children.append(Folder(folderName))
-
-        return self.findChild(folderName)
-
-class SimplicityV3(Exporter):
-    NAME = 'SimplicityV3'
-    TOOLCHAIN = 'GCC_ARM'
-
-    TARGETS = [
-        'EFM32GG_STK3700',
-        'EFM32ZG_STK3200',
-        'EFM32LG_STK3600',
-        'EFM32WG_STK3800',
-        'EFM32HG_STK3400',
-        'EFM32PG_STK3401'
-    ]
-
-    PARTS = {
-        'EFM32GG_STK3700': 'com.silabs.mcu.si32.efm32.efm32gg.efm32gg990f1024',
-        'EFM32ZG_STK3200': 'com.silabs.mcu.si32.efm32.efm32zg.efm32zg222f32',
-        'EFM32LG_STK3600': 'com.silabs.mcu.si32.efm32.efm32lg.efm32lg990f256',
-        'EFM32WG_STK3800': 'com.silabs.mcu.si32.efm32.efm32wg.efm32wg990f256',
-        'EFM32HG_STK3400': 'com.silabs.mcu.si32.efm32.efm32hg.efm32hg322f64',
-        'EFM32PG_STK3401': 'com.silabs.mcu.si32.efm32.efm32pg1b.efm32pg1b200f256gm48'
-    }
-
-    KITS = {
-        'EFM32GG_STK3700': 'com.silabs.kit.si32.efm32.efm32gg.stk3700',
-        'EFM32ZG_STK3200': 'com.silabs.kit.si32.efm32.efm32zg.stk3200',
-        'EFM32LG_STK3600': 'com.silabs.kit.si32.efm32.efm32lg.stk3600',
-        'EFM32WG_STK3800': 'com.silabs.kit.si32.efm32.efm32wg.stk3800',
-        'EFM32HG_STK3400': 'com.silabs.kit.si32.efm32.efm32hg.slstk3400a',
-		'EFM32PG_STK3401': 'com.silabs.kit.si32.efm32.efm32pg.slstk3401a'
-    }
-
-    FILE_TYPES = {
-        'c_sources':'1',
-        'cpp_sources':'1',
-        's_sources':'1'
-    }
-
-    EXCLUDED_LIBS = [
-        'm',
-        'c',
-        'gcc',
-        'nosys',
-        'supc++',
-        'stdc++'
-    ]
-
-    DOT_IN_RELATIVE_PATH = False
-
-    MBED_CONFIG_HEADER_SUPPORTED = True
-
-    orderedPaths = Folder("Root")
-
-    def check_and_add_path(self, path):
-        levels = path.split('/')
-        base = self.orderedPaths
-        for level in levels:
-            if base.contains(level):
-                base = base.findChild(level)
-            else:
-                base.addChild(level)
-                base = base.findChild(level)
-
-
-    def generate(self):
-        # "make" wants Unix paths
-        self.resources.win_to_unix()
-
-        main_files = []
-
-        EXCLUDED_LIBS = [
-            'm',
-            'c',
-            'gcc',
-            'nosys',
-            'supc++',
-            'stdc++'
-        ]
-
-        for r_type in ['s_sources', 'c_sources', 'cpp_sources']:
-            r = getattr(self.resources, r_type)
-            if r:
-                for source in r:
-                    self.check_and_add_path(split(source)[0])
-
-                    if not ('/' in source):
-                        main_files.append(source)
-
-        libraries = []
-        for lib in self.resources.libraries:
-            l, _ = splitext(basename(lib))
-            if l[3:] not in EXCLUDED_LIBS:
-                libraries.append(l[3:])
-
-        defines = []
-        for define in self.toolchain.get_symbols():
-            if '=' in define:
-                keyval = define.split('=')
-                defines.append( (keyval[0], keyval[1]) )
-            else:
-                defines.append( (define, '') )
-
-        self.check_and_add_path(split(self.resources.linker_script)[0])
-
-        ctx = {
-            'name': self.project_name,
-            'main_files': main_files,
-            'recursiveFolders': self.orderedPaths,
-            'object_files': self.resources.objects,
-            'include_paths': self.resources.inc_dirs,
-            'library_paths': self.resources.lib_dirs,
-            'linker_script': self.resources.linker_script,
-            'libraries': libraries,
-            'defines': defines,
-            'part': self.PARTS[self.target],
-            'kit': self.KITS[self.target],
-            'loopcount': 0
-        }
-        ctx.update(self.flags)
-
-        ## Strip main folder from include paths because ssproj is not capable of handling it
-        if '.' in ctx['include_paths']:
-            ctx['include_paths'].remove('.')
-            ctx['include_root'] = True
-
-        '''
-        Suppress print statements
-        print('\n')
-        print(self.target)
-        print('\n')
-        print(ctx)
-        print('\n')
-        print(self.orderedPaths)
-        for path in self.orderedPaths.children:
-            print(path.name + "\n")
-            for bpath in path.children:
-                print("\t" + bpath.name + "\n")
-        '''
-
-        self.gen_file('simplicityv3_slsproj.tmpl', ctx, '%s.slsproj' % self.project_name)