#
# set cfg and cfg kernel param
#
CFG = SRCDIR + "cfg/cfg.rb"
CFG_KERNEL = "asp"
#
# files for each project
#
asp_files = []
asp_configuration_files = ['kernel_cfg_asm.src','kernel_cfg.c']
asp_syssvc_files = ['syssvc/banner.c', 'syssvc/logtask.c', 'syssvc/serial.c', 'syssvc/syslog.c']
asp_library_files = ['library/histogram.c', 'library/log_output.c', 'library/strerror.c', 'library/t_perror.c', 'library/test_lib.c', 'library/vasyslog.c']
kernel_kernel_files = ['kernel/alarm.c','kernel/cyclic.c','kernel/dataqueue.c','kernel/eventflag.c','kernel/exception.c','kernel/interrupt.c','kernel/mailbox.c','kernel/mempfix.c','kernel/pridataq.c','kernel/semaphore.c','kernel/startup.c','kernel/sys_manage.c','kernel/task.c','kernel/task_except.c','kernel/task_manage.c','kernel/task_refer.c','kernel/task_sync.c','kernel/time_event.c','kernel/time_manage.c','kernel/wait.c']
cfg_files = []
cfg_configuration_files = ['cfg1_out.c']
#
# pre/postbuiled file
#
cfg_pre_python_files = ['arch/ccrx/pre_cfg.py']
cfg_post_python_files = ['arch/ccrx/post_cfg.py']
asp_post_python_files = ['arch/ccrx/post_asp.py']
#
# cubesuite+ depend files
#
asp_rel_includes = [".","cfg"]
cfg_rel_includes = [".."]
kernel_rel_includes = ["..\cfg"]
#
# library
#
asp_lib_files = ['kernel\\%BuildModeName%\\kernel']
#
# ccrx define
#
cfg_define = []
kernel_define = ['ALLFUNC']
if USE_SERIALDEBUG:
cfg_define = cfg_define + ['USE_SERIALDEBUG']
kernel_define = kernel_define + ['USE_SERIALDEBUG']
#
# Set cfg path and srdir path
#
cfg = "ruby -Eutf-8 " + proj_rel_dir + CFG
srcdir = proj_rel_dir + SRCDIR
#
# soucre target file
#
execfile(srcdir + "target/" + TARGET + "/target.py")
#
# merge files
#
asp_files.append(statup_file)
asp_files = asp_files + asp_syssvc_files + asp_library_files
cfg_files = cfg_files + cfg_files
kernel_files = kernel_kernel_files + kernel_target_files + kernel_arch_files
#
# Set include path and cfg1_def_table
#
INCLUDES = USER_INCLUDE + ["", "arch", "include", "kernel", "arch", "syssvc", "library"] + INCLUDES
CFG1_DEF_TABLES = ["kernel/kernel_sym.def"] + CFG1_DEF_TABLES
API_TABLE = "kernel/kernel_api.def"
CFG_KERNEL_TRB = "target/" + TARGET + "/target_kernel.trb"
CFG_OFFSET_TRB = "target/" + TARGET + "/target_offset.trb"
CFG_CHECK_TRB = "target/" + TARGET + "/target_check.trb"
#
# make cfg include path
#
cfg_includes = ""
for include in INCLUDES:
cfg_includes = cfg_includes + " -I" + srcdir + include
#
# make cfg1_def_table
#
cfg_cfg1_def_tables = ""
for cfg1_def_table in CFG1_DEF_TABLES:
cfg_cfg1_def_tables = cfg_cfg1_def_tables + " --symval-table " + srcdir + cfg1_def_table
#
# Set api_table
#
cfg_api_table = srcdir + API_TABLE
#
# Set tf
#
cfg_kernel_trb = srcdir + CFG_KERNEL_TRB
#
# Set offset tf
#
cfg_offset_trb = srcdir + CFG_OFFSET_TRB
#
# Set check tf
#
cfg_check_trb = srcdir + CFG_CHECK_TRB
#
#
# Functions
#
#
import re
#
# Set Ccrx Includes
#
def SetCcrxIncludes(inputstr, include_list, rel_include_list, relpath):
ccrx_includes = ""
for include in rel_include_list:
include_list.append(relpath + include)
for include in include_list:
ccrx_includes = ccrx_includes + include + "\n"
ccrx_includes = ccrx_includes.replace('/', r'\\')
pattern_pre = r'(\s\)[\s\S]+?(\)'
pattern_post = r'\1' + ccrx_includes + r'\2'
inputstr = re.sub (pattern_pre, pattern_post, inputstr)
return inputstr
#
# ChangeSetItemXml
#
def ChangeItemXml(inputstr, xml_pattern, newitemstr):
pattern_pre = r'<' + xml_pattern + r'>[\s\S]+?' + xml_pattern + '>'
pattern_post = '<' + xml_pattern + '>' + newitemstr + '' + xml_pattern + '>'
inputstr = re.sub (pattern_pre, pattern_post, inputstr)
return inputstr
#
# NewSetItemXml
#
def NewSetItemXml(inputstr, xml_pattern, newitemstr):
pattern_pre = r'\<' + xml_pattern + r' /\>'
pattern_post = r'<' + xml_pattern + r'>' + newitemstr + '' + xml_pattern + r'>'
inputstr = re.sub (pattern_pre, pattern_post, inputstr)
return inputstr
#
# NewSetItemXmlOnce
#
def NewSetItemXmlOnce(inputstr, xml_pattern, newitemstr):
pattern_pre = r'\<' + xml_pattern + r' /\>'
pattern_post = r'<' + xml_pattern + r'>' + newitemstr + '' + xml_pattern + r'>'
inputstr = re.sub (pattern_pre, pattern_post, inputstr, 1)
return inputstr
#
# New set Ccrx Include
#
def NewSetCcrxIncludes(inputstr, include_list, rel_include_list, relpath):
ccrx_includes = ""
for include in rel_include_list:
include_list.append(relpath + include)
for include in include_list:
ccrx_includes = ccrx_includes + include + "\n"
ccrx_includes = ccrx_includes.replace('/', r'\\')
return NewSetItemXml(inputstr, 'COptionInclude-0', ccrx_includes)
#
# New set library files
#
def NewSetLibFiles(inputstr, file_list):
lib_files = ""
for file in file_list:
lib_files = lib_files + file + "\n"
lib_files = lib_files.replace('/', r'\\')
return NewSetItemXml(inputstr, 'LinkOptionLibrary-0', lib_files)
#
# New set prebuild
#
def NewSetPrebuild(inputstr, rel_command_list, relpath):
command_str = ''
for command in rel_command_list:
command_str = command_str + relpath + command
command_str = r'#!python\ncommon.Source("' + command_str + r'")\n'
return NewSetItemXml(inputstr, 'PreBuildCommands-0', command_str)
#
# New set postbuild
#
def NewSetPostbuild(inputstr, rel_command_list, relpath):
command_str = ''
for command in rel_command_list:
command_str = command_str + relpath + command
command_str = r'#!python\ncommon.Source("' + command_str + r'")\n'
return NewSetItemXml(inputstr, 'PostBuildCommands-0', command_str)
#
# New set Define
#
def NewSetDefine(inputstr, define_list):
define_str = ''
for define in define_list:
define_str = define_str + define + '\n'
return NewSetItemXml(inputstr, 'COptionDefine-0', define_str)
#
# New set additional options
#
def NewSetAddOpt(inputstr, option_list):
option_str = ''
for option in option_list:
option_str = option_str + option + ' '
return NewSetItemXmlOnce(inputstr, 'OtherAdditionalOptions-0', option_str)
#
# Set target file relative path
#
def SetTargetFileRelativePath(inputstr, file_list, relpath):
relpath_win = re.sub(r'/',r'\\\\', relpath)
for file_path in file_list:
file_path = re.sub(r'/',r'\\\\',file_path)
pattern_pre = r'(\s\).+?' + file_path + r'(\)'
pattern_post = r'\1' + relpath_win + file_path + r'\2'
inputstr = re.sub (pattern_pre, pattern_post, inputstr)
return inputstr
#
# Set python file relative path
#
def SetPythonFileRelativePath(inputstr, file_list, relpath):
for file_path in file_list:
pattern_pre = r'".+?' + file_path + r'"'
pattern_post = r'"' + relpath + file_path + r'"'
inputstr = re.sub (pattern_pre, pattern_post, inputstr)
return inputstr
def ReadFile(filename):
f = open(filename, "r")
str = f.read()
f.close()
return str
def WriteFile(filename, str):
f = open(filename, "w")
f.write(str)
f.close()