| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | ## File      : ua.py# This file is part of RT-Thread RTOS# COPYRIGHT (C) 2006 - 2015, RT-Thread Development Team##  This program is free software; you can redistribute it and/or modify#  it under the terms of the GNU General Public License as published by#  the Free Software Foundation; either version 2 of the License, or#  (at your option) any later version.##  This program is distributed in the hope that it will be useful,#  but WITHOUT ANY WARRANTY; without even the implied warranty of#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the#  GNU General Public License for more details.##  You should have received a copy of the GNU General Public License along#  with this program; if not, write to the Free Software Foundation, Inc.,#  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.## Change Logs:# Date           Author       Notes# 2015-01-20     Bernard      Add copyright information#import osimport sysfrom utils import _make_path_relativedef PrefixPath(prefix, path):    path = os.path.abspath(path)    prefix = os.path.abspath(prefix)    if sys.platform == 'win32':        prefix = prefix.lower()        path = path.lower()    if path.startswith(prefix):        return True        return Falsedef PrepareUA(project, RTT_ROOT, BSP_ROOT):    with open('rtua.py', 'w') as ua:        # ua.write('import os\n')        # ua.write('import sys\n')        ua.write('\n')                print RTT_ROOT                CPPPATH = []        CPPDEFINES = []        for group in project:            # get each include path            if 'CPPPATH' in group and group['CPPPATH']:                CPPPATH += group['CPPPATH']            # get each group's definitions            if 'CPPDEFINES' in group and group['CPPDEFINES']:                CPPDEFINES += group['CPPDEFINES']        if len(CPPPATH):            # use absolute path             for i in range(len(CPPPATH)):                CPPPATH[i] = os.path.abspath(CPPPATH[i])            # remove repeat path            paths = [i for i in set(CPPPATH)]            CPPPATH = []            for path in paths:                if PrefixPath(RTT_ROOT, path):                    CPPPATH += ['RTT_ROOT + "/%s",' % _make_path_relative(RTT_ROOT, path).replace('\\', '/')]                                elif PrefixPath(BSP_ROOT, path):                    CPPPATH += ['BSP_ROOT + "/%s",' % _make_path_relative(BSP_ROOT, path).replace('\\', '/')]                else:                    CPPPATH += ['"%s",' % path.replace('\\', '/')]            CPPPATH.sort()            ua.write('def GetCPPPATH(BSP_ROOT, RTT_ROOT):\n')            ua.write('\tCPPPATH=[\n')            for path in CPPPATH:                ua.write('\t\t%s\n' % path)            ua.write('\t]\n\n')            ua.write('\treturn CPPPATH\n\n')        else:            ua.write('def GetCPPPATH(BSP_ROOT, RTT_ROOT):\n')            ua.write('\tCPPPATH=[]\n\n')            ua.write('\treturn CPPPATH\n\n')        if len(CPPDEFINES):            CPPDEFINES = [i for i in set(CPPDEFINES)]            ua.write('def GetCPPDEFINES():\n')            ua.write('\tCPPDEFINES=%s\n' % str(CPPDEFINES))            ua.write('\treturn CPPDEFINES\n\n')        else:            ua.write('def GetCPPDEFINES():\n')            ua.write('\tCPPDEFINES=""\n\n')            ua.write('\treturn CPPDEFINES\n\n')
 |