102 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			102 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | # | ||
|  | # 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 os | ||
|  | import sys | ||
|  | from utils import _make_path_relative | ||
|  | 
 | ||
|  | def 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 False | ||
|  | 
 | ||
|  | def 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') |