1*10465441SEvalZero# 2*10465441SEvalZero# File : ua.py 3*10465441SEvalZero# This file is part of RT-Thread RTOS 4*10465441SEvalZero# COPYRIGHT (C) 2006 - 2015, RT-Thread Development Team 5*10465441SEvalZero# 6*10465441SEvalZero# This program is free software; you can redistribute it and/or modify 7*10465441SEvalZero# it under the terms of the GNU General Public License as published by 8*10465441SEvalZero# the Free Software Foundation; either version 2 of the License, or 9*10465441SEvalZero# (at your option) any later version. 10*10465441SEvalZero# 11*10465441SEvalZero# This program is distributed in the hope that it will be useful, 12*10465441SEvalZero# but WITHOUT ANY WARRANTY; without even the implied warranty of 13*10465441SEvalZero# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*10465441SEvalZero# GNU General Public License for more details. 15*10465441SEvalZero# 16*10465441SEvalZero# You should have received a copy of the GNU General Public License along 17*10465441SEvalZero# with this program; if not, write to the Free Software Foundation, Inc., 18*10465441SEvalZero# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19*10465441SEvalZero# 20*10465441SEvalZero# Change Logs: 21*10465441SEvalZero# Date Author Notes 22*10465441SEvalZero# 2015-01-20 Bernard Add copyright information 23*10465441SEvalZero# 24*10465441SEvalZero 25*10465441SEvalZeroimport os 26*10465441SEvalZeroimport sys 27*10465441SEvalZerofrom utils import _make_path_relative 28*10465441SEvalZero 29*10465441SEvalZerodef PrefixPath(prefix, path): 30*10465441SEvalZero path = os.path.abspath(path) 31*10465441SEvalZero prefix = os.path.abspath(prefix) 32*10465441SEvalZero 33*10465441SEvalZero if sys.platform == 'win32': 34*10465441SEvalZero prefix = prefix.lower() 35*10465441SEvalZero path = path.lower() 36*10465441SEvalZero 37*10465441SEvalZero if path.startswith(prefix): 38*10465441SEvalZero return True 39*10465441SEvalZero 40*10465441SEvalZero return False 41*10465441SEvalZero 42*10465441SEvalZerodef PrepareUA(project, RTT_ROOT, BSP_ROOT): 43*10465441SEvalZero with open('rtua.py', 'w') as ua: 44*10465441SEvalZero # ua.write('import os\n') 45*10465441SEvalZero # ua.write('import sys\n') 46*10465441SEvalZero ua.write('\n') 47*10465441SEvalZero 48*10465441SEvalZero print RTT_ROOT 49*10465441SEvalZero 50*10465441SEvalZero CPPPATH = [] 51*10465441SEvalZero CPPDEFINES = [] 52*10465441SEvalZero 53*10465441SEvalZero for group in project: 54*10465441SEvalZero # get each include path 55*10465441SEvalZero if 'CPPPATH' in group and group['CPPPATH']: 56*10465441SEvalZero CPPPATH += group['CPPPATH'] 57*10465441SEvalZero 58*10465441SEvalZero # get each group's definitions 59*10465441SEvalZero if 'CPPDEFINES' in group and group['CPPDEFINES']: 60*10465441SEvalZero CPPDEFINES += group['CPPDEFINES'] 61*10465441SEvalZero 62*10465441SEvalZero if len(CPPPATH): 63*10465441SEvalZero # use absolute path 64*10465441SEvalZero for i in range(len(CPPPATH)): 65*10465441SEvalZero CPPPATH[i] = os.path.abspath(CPPPATH[i]) 66*10465441SEvalZero 67*10465441SEvalZero # remove repeat path 68*10465441SEvalZero paths = [i for i in set(CPPPATH)] 69*10465441SEvalZero CPPPATH = [] 70*10465441SEvalZero for path in paths: 71*10465441SEvalZero if PrefixPath(RTT_ROOT, path): 72*10465441SEvalZero CPPPATH += ['RTT_ROOT + "/%s",' % _make_path_relative(RTT_ROOT, path).replace('\\', '/')] 73*10465441SEvalZero 74*10465441SEvalZero elif PrefixPath(BSP_ROOT, path): 75*10465441SEvalZero CPPPATH += ['BSP_ROOT + "/%s",' % _make_path_relative(BSP_ROOT, path).replace('\\', '/')] 76*10465441SEvalZero else: 77*10465441SEvalZero CPPPATH += ['"%s",' % path.replace('\\', '/')] 78*10465441SEvalZero 79*10465441SEvalZero CPPPATH.sort() 80*10465441SEvalZero ua.write('def GetCPPPATH(BSP_ROOT, RTT_ROOT):\n') 81*10465441SEvalZero ua.write('\tCPPPATH=[\n') 82*10465441SEvalZero for path in CPPPATH: 83*10465441SEvalZero ua.write('\t\t%s\n' % path) 84*10465441SEvalZero ua.write('\t]\n\n') 85*10465441SEvalZero ua.write('\treturn CPPPATH\n\n') 86*10465441SEvalZero else: 87*10465441SEvalZero ua.write('def GetCPPPATH(BSP_ROOT, RTT_ROOT):\n') 88*10465441SEvalZero ua.write('\tCPPPATH=[]\n\n') 89*10465441SEvalZero ua.write('\treturn CPPPATH\n\n') 90*10465441SEvalZero 91*10465441SEvalZero if len(CPPDEFINES): 92*10465441SEvalZero CPPDEFINES = [i for i in set(CPPDEFINES)] 93*10465441SEvalZero 94*10465441SEvalZero ua.write('def GetCPPDEFINES():\n') 95*10465441SEvalZero ua.write('\tCPPDEFINES=%s\n' % str(CPPDEFINES)) 96*10465441SEvalZero ua.write('\treturn CPPDEFINES\n\n') 97*10465441SEvalZero 98*10465441SEvalZero else: 99*10465441SEvalZero ua.write('def GetCPPDEFINES():\n') 100*10465441SEvalZero ua.write('\tCPPDEFINES=""\n\n') 101*10465441SEvalZero ua.write('\treturn CPPDEFINES\n\n') 102