Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
rt-thread
提交
777d3c05
R
rt-thread
项目概览
BaiXuePrincess
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
777d3c05
编写于
11月 19, 2014
作者:
B
Bright Pan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add mdk5 support in SCons tools
上级
06f8426f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
159 addition
and
2 deletion
+159
-2
tools/building.py
tools/building.py
+12
-2
tools/keil.py
tools/keil.py
+147
-0
未找到文件。
tools/building.py
浏览文件 @
777d3c05
...
...
@@ -167,6 +167,7 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [
#{target_name:(CROSS_TOOL, PLATFORM)}
tgt_dict
=
{
'mdk'
:(
'keil'
,
'armcc'
),
'mdk4'
:(
'keil'
,
'armcc'
),
'mdk5'
:(
'keil'
,
'armcc'
),
'iar'
:(
'iar'
,
'iar'
),
'vs'
:(
'msvc'
,
'cl'
),
'vs2012'
:(
'msvc'
,
'cl'
),
...
...
@@ -450,6 +451,7 @@ def EndBuilding(target, program = None):
if
GetOption
(
'target'
)
==
'mdk'
:
from
keil
import
MDKProject
from
keil
import
MDK4Project
from
keil
import
MDK5Project
template
=
os
.
path
.
isfile
(
'template.Uv2'
)
if
template
:
...
...
@@ -459,13 +461,21 @@ def EndBuilding(target, program = None):
if
template
:
MDK4Project
(
'project.uvproj'
,
Projects
)
else
:
print
'No template project file found.'
template
=
os
.
path
.
isfile
(
'template.uvprojx'
)
if
template
:
MDK5Project
(
'project.uvprojx'
,
Projects
)
else
:
print
'No template project file found.'
if
GetOption
(
'target'
)
==
'mdk4'
:
from
keil
import
MDKProject
from
keil
import
MDK4Project
MDK4Project
(
'project.uvproj'
,
Projects
)
if
GetOption
(
'target'
)
==
'mdk5'
:
from
keil
import
MDK5Project
MDK5Project
(
'project.uvprojx'
,
Projects
)
if
GetOption
(
'target'
)
==
'iar'
:
from
iar
import
IARProject
IARProject
(
'project.ewp'
,
Projects
)
...
...
tools/keil.py
浏览文件 @
777d3c05
...
...
@@ -162,6 +162,153 @@ def MDK4Project(target, script):
import
shutil
shutil
.
copy2
(
'template.uvopt'
,
'project.uvopt'
)
def
MDK5AddGroupForFN
(
ProjectFiles
,
parent
,
name
,
filename
,
project_path
):
group
=
SubElement
(
parent
,
'Group'
)
group_name
=
SubElement
(
group
,
'GroupName'
)
group_name
.
text
=
name
name
=
os
.
path
.
basename
(
filename
)
path
=
os
.
path
.
dirname
(
filename
)
basename
=
os
.
path
.
basename
(
path
)
path
=
_make_path_relative
(
project_path
,
path
)
path
=
os
.
path
.
join
(
path
,
name
)
files
=
SubElement
(
group
,
'Files'
)
file
=
SubElement
(
files
,
'File'
)
file_name
=
SubElement
(
file
,
'FileName'
)
name
=
os
.
path
.
basename
(
path
)
if
ProjectFiles
.
count
(
name
):
name
=
basename
+
'_'
+
name
ProjectFiles
.
append
(
name
)
file_name
.
text
=
name
.
decode
(
fs_encoding
)
file_type
=
SubElement
(
file
,
'FileType'
)
file_type
.
text
=
'%d'
%
_get_filetype
(
name
)
file_path
=
SubElement
(
file
,
'FilePath'
)
file_path
.
text
=
path
.
decode
(
fs_encoding
)
def
MDK5AddGroup
(
ProjectFiles
,
parent
,
name
,
files
,
project_path
):
# don't add an empty group
if
len
(
files
)
==
0
:
return
group
=
SubElement
(
parent
,
'Group'
)
group_name
=
SubElement
(
group
,
'GroupName'
)
group_name
.
text
=
name
for
f
in
files
:
fn
=
f
.
rfile
()
name
=
fn
.
name
path
=
os
.
path
.
dirname
(
fn
.
abspath
)
basename
=
os
.
path
.
basename
(
path
)
path
=
_make_path_relative
(
project_path
,
path
)
path
=
os
.
path
.
join
(
path
,
name
)
files
=
SubElement
(
group
,
'Files'
)
file
=
SubElement
(
files
,
'File'
)
file_name
=
SubElement
(
file
,
'FileName'
)
name
=
os
.
path
.
basename
(
path
)
if
ProjectFiles
.
count
(
name
):
name
=
basename
+
'_'
+
name
ProjectFiles
.
append
(
name
)
file_name
.
text
=
name
.
decode
(
fs_encoding
)
file_type
=
SubElement
(
file
,
'FileType'
)
file_type
.
text
=
'%d'
%
_get_filetype
(
name
)
file_path
=
SubElement
(
file
,
'FilePath'
)
file_path
.
text
=
path
.
decode
(
fs_encoding
)
def
MDK5Project
(
target
,
script
):
project_path
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
target
))
project_uvopt
=
os
.
path
.
abspath
(
target
).
replace
(
'uvprojx'
,
'uvoptx'
)
if
os
.
path
.
isfile
(
project_uvopt
):
os
.
unlink
(
project_uvopt
)
tree
=
etree
.
parse
(
'template.uvprojx'
)
root
=
tree
.
getroot
()
out
=
file
(
target
,
'wb'
)
out
.
write
(
'<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
\n
'
)
CPPPATH
=
[]
CPPDEFINES
=
[]
LINKFLAGS
=
''
CCFLAGS
=
''
ProjectFiles
=
[]
# add group
groups
=
tree
.
find
(
'Targets/Target/Groups'
)
if
groups
is
None
:
groups
=
SubElement
(
tree
.
find
(
'Targets/Target'
),
'Groups'
)
for
group
in
script
:
group_xml
=
MDK4AddGroup
(
ProjectFiles
,
groups
,
group
[
'name'
],
group
[
'src'
],
project_path
)
# get each include path
if
group
.
has_key
(
'CPPPATH'
)
and
group
[
'CPPPATH'
]:
if
CPPPATH
:
CPPPATH
+=
group
[
'CPPPATH'
]
else
:
CPPPATH
+=
group
[
'CPPPATH'
]
# get each group's definitions
if
group
.
has_key
(
'CPPDEFINES'
)
and
group
[
'CPPDEFINES'
]:
if
CPPDEFINES
:
CPPDEFINES
+=
group
[
'CPPDEFINES'
]
else
:
CPPDEFINES
+=
group
[
'CPPDEFINES'
]
# get each group's link flags
if
group
.
has_key
(
'LINKFLAGS'
)
and
group
[
'LINKFLAGS'
]:
if
LINKFLAGS
:
LINKFLAGS
+=
' '
+
group
[
'LINKFLAGS'
]
else
:
LINKFLAGS
+=
group
[
'LINKFLAGS'
]
if
group
.
has_key
(
'LIBS'
)
and
group
[
'LIBS'
]:
for
item
in
group
[
'LIBS'
]:
lib_path
=
''
for
path_item
in
group
[
'LIBPATH'
]:
full_path
=
os
.
path
.
join
(
path_item
,
item
+
'.lib'
)
if
os
.
path
.
isfile
(
full_path
):
# has this library
lib_path
=
full_path
if
lib_path
!=
''
:
MDK4AddGroupForFN
(
ProjectFiles
,
groups
,
group
[
'name'
],
lib_path
,
project_path
)
# remove repeat path
paths
=
set
()
for
path
in
CPPPATH
:
inc
=
_make_path_relative
(
project_path
,
os
.
path
.
normpath
(
path
))
paths
.
add
(
inc
)
#.replace('\\', '/')
paths
=
[
i
for
i
in
paths
]
paths
.
sort
()
CPPPATH
=
string
.
join
(
paths
,
';'
)
definitions
=
[
i
for
i
in
set
(
CPPDEFINES
)]
CPPDEFINES
=
string
.
join
(
definitions
,
', '
)
# write include path, definitions and link flags
IncludePath
=
tree
.
find
(
'Targets/Target/TargetOption/TargetArmAds/Cads/VariousControls/IncludePath'
)
IncludePath
.
text
=
CPPPATH
Define
=
tree
.
find
(
'Targets/Target/TargetOption/TargetArmAds/Cads/VariousControls/Define'
)
Define
.
text
=
CPPDEFINES
Misc
=
tree
.
find
(
'Targets/Target/TargetOption/TargetArmAds/LDads/Misc'
)
Misc
.
text
=
LINKFLAGS
xml_indent
(
root
)
out
.
write
(
etree
.
tostring
(
root
,
encoding
=
'utf-8'
))
out
.
close
()
# copy uvopt file
if
os
.
path
.
exists
(
'template.uvoptx'
):
import
shutil
shutil
.
copy2
(
'template.uvoptx'
,
'project.uvoptx'
)
def
MDKProject
(
target
,
script
):
template
=
file
(
'template.Uv2'
,
"rb"
)
lines
=
template
.
readlines
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录