source: atk2-sc3_fl850f1l/arch/ccrh/common.py@ 117

Last change on this file since 117 was 117, checked in by ertl-ishikawa, 9 years ago

ATK2-SC3 1.3.2 FL850F1L(RH850F1L)依存部(GCC/GHS/CCRH)を追加

File size: 11.2 KB
Line 
1#!python
2# -*- coding: euc-jp -*-
3#
4# TOPPERS ATK2
5# Toyohashi Open Platform for Embedded Real-Time Systems
6# Automotive Kernel Version 2
7#
8# Copyright (C) 2013-2015 by Center for Embedded Computing Systems
9# Graduate School of Information Science, Nagoya Univ., JAPAN
10# Copyright (C) 2013-2014 by FUJI SOFT INCORPORATED, JAPAN
11# Copyright (C) 2013-2014 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
12# Copyright (C) 2013-2014 by Renesas Electronics Corporation, JAPAN
13# Copyright (C) 2013-2014 by Sunny Giken Inc., JAPAN
14# Copyright (C) 2013-2014 by TOSHIBA CORPORATION, JAPAN
15# Copyright (C) 2013-2014 by Witz Corporation, JAPAN
16#
17# 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
18# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
19# 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
20# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
21# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
22# スコード中に含まれていること.
23# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
24# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
25# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
26# の無保証規定を掲載すること.
27# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
28# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
29# と.
30# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
31# 作権表示,この利用条件および下記の無保証規定を掲載すること.
32# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
33# 報告すること.
34# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
35# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
36# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
37# 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
38# 免責すること.
39#
40# 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
41# 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
42# はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
43# 用する者に対して,AUTOSARパートナーになることを求めている.
44#
45# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
46# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
47# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
48# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
49# の責任を負わない.
50#
51# $Id: common.py 182 2015-06-24 07:14:37Z t_ishikawa $
52#
53
54#
55# variable definition
56#
57INCLUDES = []
58CFG1_DEF_TABLES = []
59
60#
61# set cfg and cfg kernel param
62#
63CFG = SRCDIR + "cfg/cfg/cfg.exe"
64CFG_KERNEL = "atk2"
65
66#
67# files for each project
68#
69app_files = []
70app_configuration_files = ['Os_Lcfg_asm.asm', 'Os_Lcfg.c', 'kernel_mem.c', 'ioc.c']
71app_sysmod_files = ['sysmod/banner.c', 'sysmod/serial.c', 'sysmod/syslog.c']
72app_library_files = ['library/log_output.c', 'library/strerror.c', 'library/t_perror.c', 'library/vasyslog.c']
73
74kernel_kernel_files = ['kernel/alarm.c','kernel/counter.c','kernel/counter_manage.c','kernel/event.c','kernel/interrupt.c','kernel/interrupt_manage.c','kernel/osctl.c','kernel/osctl_manage.c','kernel/resource.c','kernel/scheduletable.c','kernel/task.c','kernel/task_manage.c','kernel/ioc_manage.c','kernel/memory.c','kernel/osap.c','kernel/svc_table.c']
75
76cfg_files = []
77cfg_configuration_files = ['cfg1_out.c']
78
79#
80# pre/postbuiled file
81#
82cfg_pre_python_files = ['arch/ccrh/pre_cfg.py']
83cfg_post_python_files = ['arch/ccrh/post_cfg.py']
84#atk2_sc3_post_python_files = ['arch/ccrh/post_atk2.py']
85cfg_pass4_post_python_files = ['arch/ccrh/post_cfg_pass4.py']
86# atk2_sc3_pre_python_files = ['cfg/ldscript.py']
87
88#
89# cubesuite+ depend files
90#
91atk2_sc3_rel_includes = [".","cfg"]
92cfg_rel_includes = [".."]
93kernel_rel_includes = ["..","..\cfg"]
94
95#
96# library
97#
98#atk2_sc3_lib_includes = []
99atk2_sc3_lib_files = [r'kernel\%BuildModeName%\kernel']
100cfg_pass4_lib_files = [r'..\kernel\%BuildModeName%\kernel']
101
102#
103# cx define
104#
105kernel_define = ['ALLFUNC', 'TOPPERS_LABEL_ASM', 'USE_CCRH', 'MPU_REGION_NUM=%d' % (MPU_REGION_NUM)]
106
107#
108# cx additional option
109# -Xno_warning=20177 : Suppress warnings no refer label(exit_no_errorhooh, d_exit_no_errorhook)
110kernel_c_addopt = ['-Xno_warning=20177']
111# -Xno_warning=50013 : Use r1 register as source register
112kernel_asm_addopt = ['-Xno_warning=50013']
113
114#
115# Set cfg path and srdir path
116#
117cfg = proj_rel_dir + CFG
118srcdir = proj_rel_dir + SRCDIR
119
120#
121# soucre target file
122#
123execfile(srcdir + "target/" + TARGET + "/target.py")
124
125#
126# merge files
127#
128app_files.append(statup_file)
129app_files = app_files + app_sysmod_files + app_library_files
130kernel_files = kernel_kernel_files + kernel_target_files + kernel_arch_files
131
132#
133# Set include path and cfg1_def_table
134#
135INCLUDES = USER_INCLUDE + ["", "arch", "include", "kernel", "arch", "sysmod", "library"] + INCLUDES
136CFG1_DEF_TABLES = ["kernel/kernel_def.csv"] + CFG1_DEF_TABLES
137
138API_TABLE = "kernel/kernel.csv"
139INI_FILE = "kernel/kernel.ini"
140
141CFG_TF = "target/" + TARGET + "/target.tf"
142CFG_OFFSET_TF = "target/" + TARGET + "/target_offset.tf"
143CFG_MEM_TF = "target/" + TARGET + "/target_mem.tf"
144
145#
146# cfg input files
147#
148cfg_rel_files = []
149cfg_input_str = ""
150for cfg_filename in CFGNAME:
151 cfg_rel_file = cfg_filename + '.arxml'
152
153 cfg_list = [proj_rel_dir + cfg_rel_file]
154 for inc_path in INCLUDES:
155 cfg_list = cfg_list + [src_abs_path + '/' + inc_path + '/' + cfg_rel_file]
156
157 flg = 0
158 for cfg_rel_file in cfg_list:
159 if os.path.exists(cfg_rel_file):
160 cfg_rel_files.append(cfg_rel_file)
161 flg = 1
162 break
163
164 if flg == 0:
165 print "WARNING!! : Not Exist %s" % cfg_filename
166
167cfg_input_str = " ".join(cfg_rel_files)
168
169#
170# make cfg include path
171#
172cfg_includes = ""
173for include in INCLUDES:
174 cfg_includes = cfg_includes + " -I" + srcdir + include
175
176#
177# make cfg1_def_table
178#
179cfg_cfg1_def_tables = ""
180for cfg1_def_table in CFG1_DEF_TABLES:
181 cfg_cfg1_def_tables = cfg_cfg1_def_tables + " --cfg1-def-table " + srcdir + cfg1_def_table
182
183#
184# Set api_table
185#
186cfg_api_table = srcdir + API_TABLE
187
188#
189# Set ini_file
190#
191cfg_ini_file = srcdir + INI_FILE
192
193#
194# Set tf
195#
196cfg_tf = srcdir + CFG_TF
197
198#
199# Set offset tf
200#
201cfg_offset_tf = srcdir + CFG_OFFSET_TF
202
203#
204# Set check tf
205#
206cfg_mem_tf = srcdir + CFG_MEM_TF
207
208#
209#
210# Functions
211#
212#
213import re
214
215#
216# Set Cx Includes
217#
218def SetCxIncludes(inputstr, include_list, rel_include_list, relpath):
219 cx_includes = ""
220 for include in rel_include_list:
221 include_list.append(relpath + include)
222 for include in include_list:
223 cx_includes = cx_includes + include + "\n"
224 cx_includes = cx_includes.replace('/', r'\\')
225 pattern_pre = r'(\s\<AdditionalIncludePaths-0\>)[\s\S]+?(\</AdditionalIncludePaths-0\>)'
226 pattern_post = r'\1' + cx_includes + r'\2'
227 inputstr = re.sub (pattern_pre, pattern_post, inputstr)
228 return inputstr
229
230#
231# ChangeSetItemXml
232#
233def ChangeItemXml(inputstr, xml_pattern, newitemstr):
234 pattern_pre = r'<' + xml_pattern + r'>[\s\S]+?</' + xml_pattern + '>'
235 pattern_post = '<' + xml_pattern + '>' + newitemstr + '</' + xml_pattern + '>'
236 inputstr = re.sub (pattern_pre, pattern_post, inputstr)
237 return inputstr
238
239#
240# NewSetItemXml
241#
242def NewSetItemXml(inputstr, xml_pattern, newitemstr):
243 pattern_pre = r'\<' + xml_pattern + r' /\>'
244 pattern_post = r'<' + xml_pattern + r'>' + newitemstr + '</' + xml_pattern + r'>'
245 inputstr = re.sub (pattern_pre, pattern_post, inputstr)
246 return inputstr
247
248#
249# NewSetItemXmlOnce
250#
251def NewSetItemXmlOnce(inputstr, xml_pattern, newitemstr):
252 pattern_pre = r'\<' + xml_pattern + r' /\>'
253 pattern_post = r'<' + xml_pattern + r'>' + newitemstr + '</' + xml_pattern + r'>'
254 inputstr = re.sub (pattern_pre, pattern_post, inputstr, 1)
255 return inputstr
256
257#
258# New set Cx Include
259#
260def NewSetCxIncludes(inputstr, include_list, rel_include_list, relpath):
261 cx_includes = ""
262 for include in rel_include_list:
263 include_list.append(relpath + include)
264 for include in include_list:
265 cx_includes = cx_includes + include + "\n"
266 cx_includes = cx_includes.replace('/', r'\\')
267 return NewSetItemXml(inputstr, 'AdditionalIncludePaths-0', cx_includes)
268
269def NewSetCCRHIncludes(inputstr, include_list, rel_include_list, relpath):
270 ccrh_includes = ""
271 for include in rel_include_list:
272 include_list.append(relpath + include)
273 for include in include_list:
274 ccrh_includes = ccrh_includes + include + "\n"
275 ccrh_includes = ccrh_includes.replace('/', r'\\')
276 return NewSetItemXml(inputstr, 'COptionI-0', ccrh_includes)
277
278#
279# New set library Include
280#
281def NewSetLibIncludes(inputstr, include_list, rel_include_list, relpath):
282 lib_includes = ""
283 for include in rel_include_list:
284 include_list.append(relpath + include)
285 for include in include_list:
286 lib_includes = lib_includes + include + "\n"
287 lib_includes = lib_includes.replace('/', r'\\')
288 return NewSetItemXml(inputstr, 'AdditionalLibraryPaths-0', lib_includes)
289
290#
291# New set library files
292#
293def NewSetLibFiles(inputstr, file_list):
294 lib_files = ""
295 for file in file_list:
296 lib_files = lib_files + file + "\n"
297 lib_files = lib_files.replace('/', r'\\')
298 return NewSetItemXml(inputstr, 'LinkOptionLibrary-0', lib_files)
299
300#
301# New set prebuild
302#
303def NewSetPrebuild(inputstr, rel_command_list, relpath):
304 command_str = ''
305 for command in rel_command_list:
306 command_str = command_str + relpath + command
307 command_str = r'#!python\ncommon.Source("' + command_str + r'")\n'
308 return NewSetItemXml(inputstr, 'PreBuildCommands-0', command_str)
309
310
311#
312# New set postbuild
313#
314def NewSetPostbuild(inputstr, rel_command_list, relpath):
315 command_str = ''
316 for command in rel_command_list:
317 command_str = command_str + relpath + command
318 command_str = r'#!python\ncommon.Source("' + command_str + r'")\n'
319 return NewSetItemXml(inputstr, 'PostBuildCommands-0', command_str)
320
321
322#
323# New set Define
324#
325def NewSetDefine(inputstr, define_list):
326 define_str = ''
327 for define in define_list:
328 define_str = define_str + define + '\n'
329 return NewSetItemXml(inputstr, 'COptionD-0', define_str)
330
331#
332# New set additional options
333#
334def NewSetCAddOpt(inputstr, option_list):
335 option_str = ''
336 for option in option_list:
337 option_str = option_str + option + ' '
338 return NewSetItemXmlOnce(inputstr, 'COptionOtherAdditionalOptions-0', option_str)
339
340def NewSetAsmAddOpt(inputstr, option_list):
341 option_str = ''
342 for option in option_list:
343 option_str = option_str + option + ' '
344 return NewSetItemXmlOnce(inputstr, 'AsmOptionOtherAdditionalOptions-0', option_str)
345
346#
347# Set target file relative path
348#
349def SetTargetFileRelativePath(inputstr, file_list, relpath):
350 relpath_win = re.sub(r'/',r'\\\\', relpath)
351 for file_path in file_list:
352 file_path = re.sub(r'/',r'\\\\',file_path)
353 pattern_pre = r'(\s\<RelativePath\>).+?' + file_path + r'(\</RelativePath\>)'
354 pattern_post = r'\1' + relpath_win + file_path + r'\2'
355 inputstr = re.sub (pattern_pre, pattern_post, inputstr)
356 return inputstr
357
358
359#
360# Set python file relative path
361#
362def SetPythonFileRelativePath(inputstr, file_list, relpath):
363 for file_path in file_list:
364 pattern_pre = r'".+?' + file_path + r'"'
365 pattern_post = r'"' + relpath + file_path + r'"'
366 inputstr = re.sub (pattern_pre, pattern_post, inputstr)
367 return inputstr
368
369def ReadFile(filename):
370 f = open(filename, "r")
371 str = f.read()
372 f.close()
373 return str
374
375def WriteFile(filename, str):
376 f = open(filename, "w")
377 f.write(str)
378 f.close()
379
380def WriteFile_B(filename, str):
381 f = open(filename, "wb")
382 f.write(str)
383 f.close()
384
Note: See TracBrowser for help on using the repository browser.