# # 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]+?' pattern_post = '<' + xml_pattern + '>' + newitemstr + '' 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 + '' 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 + '' 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()