- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
M5编译流程分_WPrJin
M5编译流程分析
Scons脚本解读
2017-6-18
1
M5编译步骤分析
2017-6-18
2
Scons执行脚步始终从源文件根目录下的 Sconstruct开始执行
2017-6-18
3
Sconstruct调用函数Sconscript(*p,
*KWp)执行子目录下的Sconscript。
Fig. 2 Sconstruct调用子级SConscript
Fig. 1 M5源文件首层结构
Src/Sconscript遍历执行m5根文件下的所有 目录中的Sconscript
2017-6-18
4
Fig. 3 Sconscript的遍历执行
src/Sconscript完成对编译环境的配置,并调用函数makeEnv完成对特定环境的编译
2017-6-18
5
Fig.4 有四种可配置的编译目标
Scons中规定当有多个编译目标时,执行函数Default()指定的编译目标。除非有指定命令行参数即列表COMMAND_LINE_TARGET有值(见scons user manu 12.3)
2017-6-18
6
Fig.5 Sconstruct对编译目标的指定
M5环境变量
2017-6-18
7
环境变量(下称env)是一种字典变量。它是m5配置的基础。根据编译平台的不同设置其编译器,操作系统中的系统命令等。
2017-6-18
8
父Sconscript和子Sconscript间通过函数Export(),Import()完成变量传递;传递的变量实现了轻量级的配置方法。
Sconscript间传递的变量有:
all_isa_list [ ]:记录所有支持的指令类型
all_cpu_list[ ]:记录所有支持的CPU模型
default_cpus[ ]:缺省支持的CPU模型
cc_lib_sources[ ]:所有编译成lib的C++文件列表
cc_bin_sources[ ]:所有编译成obj的C++文件列表
py_sources[ ]:所有要被执行或涉及的python脚本列表
swig_sources[ ]:所有要被编译的swig源文件列表
Sconstruct中定义的列表及其配置
2017-6-18
9
all_isa_list[ ], all_cpu_list[ ], default_cpus[ ]在Sconstruct中定义并配置
Sconsopts在有影响的子级目录中存在,这些子级目录有:
Fig.6 Sconsopt配置脚本的遍历执行
all_cpu_list.append(O3CPU)
default_cpus.append(O3CPU)
List.2 src/cpu/O3/Sconsopt配置脚本
all_isa_list.append(alpha)
List.1 src/arch/alpha/Sconsopt配置脚本
src/Sconscript中定义的列表及其配置
2017-6-18
10
src/Sconscript中定义了函数makeEnv( )来完成目标的建立,其中使用的
全局参数列表及其操作函数有:
全局列表变量
对应函数
cc_swig_sources[ ]
SwigSource( )
cc_lib_sources[ ]
Source( )
cc_bin_sources[ ]
BinSource( )
py_source[ ]
PySource( )
List. 3 全局变量列表
cc_lib_sources = []
def Source(source):
Add a source file to the libm5 build
if not isinstance(source, SCons.Node.FS.File):
source = File(source)
cc_lib_sources.append(source)
List. 4 列表变量的添加
2017-6-18
11
Fig.7 在目标目录中子目录的Sconscript完成对列表变量的添加:
文档评论(0)