Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Mr_Pangza
rt-thread
提交
62a7c59c
R
rt-thread
项目概览
Mr_Pangza
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
2
Star
1
Fork
1
代码
文件
提交
分支
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
62a7c59c
编写于
12月 28, 2018
作者:
armink_ztl
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[Tools] Sync to latest version.
上级
7a6a1e11
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
235 addition
and
15 deletion
+235
-15
tools/building.py
tools/building.py
+32
-6
tools/menuconfig.py
tools/menuconfig.py
+17
-0
tools/mkdist.py
tools/mkdist.py
+50
-0
tools/pymenuconfig.py
tools/pymenuconfig.py
+41
-8
tools/ses.py
tools/ses.py
+92
-0
tools/utils.py
tools/utils.py
+3
-1
未找到文件。
tools/building.py
浏览文件 @
62a7c59c
...
...
@@ -105,8 +105,11 @@ class Win32Spawn:
try
:
proc
=
subprocess
.
Popen
(
cmdline
,
env
=
_e
,
shell
=
False
)
except
Exception
as
e
:
print
(
'Error in calling:
\n
'
+
cmdline
)
print
(
'Exception: '
+
e
+
': '
+
os
.
strerror
(
e
.
errno
))
print
(
'Error in calling command:'
+
cmdline
.
split
(
' '
)[
0
])
print
(
'Exception: '
+
os
.
strerror
(
e
.
errno
))
if
(
os
.
strerror
(
e
.
errno
)
==
"No such file or directory"
):
print
(
"
\n
Please check Toolchains PATH setting.
\n
"
)
return
e
.
errno
finally
:
os
.
environ
[
'PATH'
]
=
old_path
...
...
@@ -128,7 +131,7 @@ def GenCconfigFile(env, BuildOptions):
f
=
open
(
'cconfig.h'
,
'r'
)
if
f
:
contents
=
f
.
read
()
f
.
close
()
;
f
.
close
()
prep
=
PatchedPreProcessor
()
prep
.
process_contents
(
contents
)
...
...
@@ -184,7 +187,7 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [
AddOption
(
'--target'
,
dest
=
'target'
,
type
=
'string'
,
help
=
'set target project: mdk/mdk4/mdk5/iar/vs/vsc/ua/cdk'
)
help
=
'set target project: mdk/mdk4/mdk5/iar/vs/vsc/ua/cdk
/ses
'
)
AddOption
(
'--genconfig'
,
dest
=
'genconfig'
,
action
=
'store_true'
,
...
...
@@ -224,7 +227,8 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [
'vsc'
:
(
'gcc'
,
'gcc'
),
'cb'
:(
'keil'
,
'armcc'
),
'ua'
:(
'gcc'
,
'gcc'
),
'cdk'
:(
'gcc'
,
'gcc'
)}
'cdk'
:(
'gcc'
,
'gcc'
),
'ses'
:
(
'gcc'
,
'gcc'
)}
tgt_name
=
GetOption
(
'target'
)
if
tgt_name
:
...
...
@@ -345,8 +349,20 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [
action
=
'store_true'
,
default
=
False
,
help
=
'make menuconfig for RT-Thread BSP'
)
if
GetOption
(
'pyconfig'
):
AddOption
(
'--pyconfig-silent'
,
dest
=
'pyconfig_silent'
,
action
=
'store_true'
,
default
=
False
,
help
=
'Don`t show pyconfig window'
)
if
GetOption
(
'pyconfig_silent'
):
from
menuconfig
import
pyconfig_silent
pyconfig_silent
(
Rtt_Root
)
exit
(
0
)
elif
GetOption
(
'pyconfig'
):
from
menuconfig
import
pyconfig
pyconfig
(
Rtt_Root
)
exit
(
0
)
...
...
@@ -797,6 +813,10 @@ def GenTargetProject(program = None):
from
cdk
import
CDKProject
CDKProject
(
'project.cdkproj'
,
Projects
)
if
GetOption
(
'target'
)
==
'ses'
:
from
ses
import
SESProject
SESProject
(
Env
)
def
EndBuilding
(
target
,
program
=
None
):
import
rtconfig
...
...
@@ -805,6 +825,12 @@ def EndBuilding(target, program = None):
Env
[
'target'
]
=
program
Env
[
'project'
]
=
Projects
if
hasattr
(
rtconfig
,
'BSP_LIBRARY_TYPE'
):
Env
[
'bsp_lib_type'
]
=
rtconfig
.
BSP_LIBRARY_TYPE
if
hasattr
(
rtconfig
,
'dist_handle'
):
Env
[
'dist_handle'
]
=
rtconfig
.
dist_handle
Env
.
AddPostAction
(
target
,
rtconfig
.
POST_ACTION
)
# Add addition clean files
Clean
(
target
,
'cconfig.h'
)
...
...
tools/menuconfig.py
浏览文件 @
62a7c59c
...
...
@@ -251,3 +251,20 @@ def pyconfig(RTT_ROOT):
if
mtime
!=
mtime2
:
mk_rtconfig
(
fn
)
# pyconfig_silent for windows and linux
def
pyconfig_silent
(
RTT_ROOT
):
import
pymenuconfig
print
(
"In pyconfig silent mode. Don`t display menuconfig window."
)
touch_env
()
env_dir
=
get_env_dir
()
os
.
environ
[
'PKGS_ROOT'
]
=
os
.
path
.
join
(
env_dir
,
'packages'
)
fn
=
'.config'
pymenuconfig
.
main
([
'--kconfig'
,
'Kconfig'
,
'--config'
,
'.config'
,
'--silent'
,
'True'
])
# silent mode, force to make rtconfig.h
mk_rtconfig
(
fn
)
tools/mkdist.py
浏览文件 @
62a7c59c
...
...
@@ -122,6 +122,24 @@ def bsp_update_kconfig(dist_dir):
line
=
line
[
0
:
position
]
+
'default: "rt-thread"
\n
'
found
=
0
f
.
write
(
line
)
def
bsp_update_kconfig_library
(
dist_dir
):
# change RTT_ROOT in Kconfig
if
not
os
.
path
.
isfile
(
os
.
path
.
join
(
dist_dir
,
'Kconfig'
)):
return
with
open
(
os
.
path
.
join
(
dist_dir
,
'Kconfig'
),
'r'
)
as
f
:
data
=
f
.
readlines
()
with
open
(
os
.
path
.
join
(
dist_dir
,
'Kconfig'
),
'w'
)
as
f
:
found
=
0
for
line
in
data
:
if
line
.
find
(
'RTT_ROOT'
)
!=
-
1
:
found
=
1
if
line
.
find
(
'../libraries'
)
!=
-
1
and
found
:
position
=
line
.
find
(
'../libraries'
)
line
=
line
[
0
:
position
]
+
'libraries/Kconfig"
\n
'
found
=
0
f
.
write
(
line
)
def
bs_update_ide_project
(
bsp_root
,
rtt_root
):
import
subprocess
...
...
@@ -169,6 +187,21 @@ def MkDist_Strip(program, BSP_ROOT, RTT_ROOT, Env):
print
(
'=> %s'
%
os
.
path
.
basename
(
BSP_ROOT
))
bsp_copy_files
(
BSP_ROOT
,
dist_dir
)
# copy stm32 bsp libiary files
if
os
.
path
.
basename
(
os
.
path
.
dirname
(
BSP_ROOT
))
==
'stm32'
:
print
(
"=> copy stm32 bsp library"
)
library_path
=
os
.
path
.
join
(
os
.
path
.
dirname
(
BSP_ROOT
),
'libraries'
)
library_dir
=
os
.
path
.
join
(
dist_dir
,
'libraries'
)
bsp_copy_files
(
os
.
path
.
join
(
library_path
,
'HAL_Drivers'
),
os
.
path
.
join
(
library_dir
,
'HAL_Drivers'
))
bsp_copy_files
(
os
.
path
.
join
(
library_path
,
Env
[
'bsp_lib_type'
]),
os
.
path
.
join
(
library_dir
,
Env
[
'bsp_lib_type'
]))
shutil
.
copyfile
(
os
.
path
.
join
(
library_path
,
'Kconfig'
),
os
.
path
.
join
(
library_dir
,
'Kconfig'
))
# do bsp special dist handle
if
'dist_handle'
in
Env
:
print
(
"=> start dist handle"
)
dist_handle
=
Env
[
'dist_handle'
]
dist_handle
(
BSP_ROOT
)
# get all source files from program
for
item
in
program
:
walk_children
(
item
)
...
...
@@ -260,6 +293,7 @@ def MkDist_Strip(program, BSP_ROOT, RTT_ROOT, Env):
bsp_update_sconstruct
(
dist_dir
)
# change RTT_ROOT in Kconfig
bsp_update_kconfig
(
dist_dir
)
bsp_update_kconfig_library
(
dist_dir
)
# update all project files
bs_update_ide_project
(
dist_dir
,
target_path
)
...
...
@@ -280,6 +314,21 @@ def MkDist(program, BSP_ROOT, RTT_ROOT, Env):
print
(
'=> %s'
%
os
.
path
.
basename
(
BSP_ROOT
))
bsp_copy_files
(
BSP_ROOT
,
dist_dir
)
# copy stm32 bsp libiary files
if
os
.
path
.
basename
(
os
.
path
.
dirname
(
BSP_ROOT
))
==
'stm32'
:
print
(
"=> copy stm32 bsp library"
)
library_path
=
os
.
path
.
join
(
os
.
path
.
dirname
(
BSP_ROOT
),
'libraries'
)
library_dir
=
os
.
path
.
join
(
dist_dir
,
'libraries'
)
bsp_copy_files
(
os
.
path
.
join
(
library_path
,
'HAL_Drivers'
),
os
.
path
.
join
(
library_dir
,
'HAL_Drivers'
))
bsp_copy_files
(
os
.
path
.
join
(
library_path
,
Env
[
'bsp_lib_type'
]),
os
.
path
.
join
(
library_dir
,
Env
[
'bsp_lib_type'
]))
shutil
.
copyfile
(
os
.
path
.
join
(
library_path
,
'Kconfig'
),
os
.
path
.
join
(
library_dir
,
'Kconfig'
))
# do bsp special dist handle
if
'dist_handle'
in
Env
:
print
(
"=> start dist handle"
)
dist_handle
=
Env
[
'dist_handle'
]
dist_handle
(
BSP_ROOT
)
# copy tools directory
print
(
'=> components'
)
do_copy_folder
(
os
.
path
.
join
(
RTT_ROOT
,
'components'
),
os
.
path
.
join
(
target_path
,
'components'
))
...
...
@@ -316,6 +365,7 @@ def MkDist(program, BSP_ROOT, RTT_ROOT, Env):
bsp_update_sconstruct
(
dist_dir
)
# change RTT_ROOT in Kconfig
bsp_update_kconfig
(
dist_dir
)
bsp_update_kconfig_library
(
dist_dir
)
# update all project files
bs_update_ide_project
(
dist_dir
,
target_path
)
...
...
tools/pymenuconfig.py
浏览文件 @
62a7c59c
...
...
@@ -543,8 +543,11 @@ class MenuConfig(object):
(
'Save as'
,
ACTION_SAVE_AS
),
)
def
__init__
(
self
,
kconfig
):
def
__init__
(
self
,
kconfig
,
__silent
=
None
):
self
.
kconfig
=
kconfig
self
.
__silent
=
__silent
if
self
.
__silent
is
True
:
return
# Instantiate Tk widgets
self
.
root
=
tk
.
Tk
()
...
...
@@ -728,6 +731,8 @@ class MenuConfig(object):
def
_close_window
(
self
):
if
self
.
prevent_losing_changes
():
print
(
'Exiting..'
)
if
self
.
__silent
is
True
:
return
self
.
root
.
destroy
()
def
_action_exit
(
self
):
...
...
@@ -949,6 +954,8 @@ class MenuConfig(object):
- current config path
- status string (see set_status_string())
"""
if
self
.
__silent
is
True
:
return
self
.
tk_status
.
set
(
'{} [{}] {}'
.
format
(
'<UNSAVED>'
if
self
.
unsaved_changes
else
''
,
self
.
config_path
if
self
.
config_path
else
''
,
...
...
@@ -1017,6 +1024,10 @@ class MenuConfig(object):
self
.
mark_as_changed
()
if
not
self
.
unsaved_changes
:
return
True
if
self
.
__silent
:
saved
=
self
.
save_config
()
return
saved
res
=
messagebox
.
askyesnocancel
(
parent
=
self
.
root
,
title
=
'Unsaved changes'
,
...
...
@@ -1056,11 +1067,13 @@ class MenuConfig(object):
self
.
kconfig
.
load_config
(
path
)
except
IOError
as
e
:
self
.
set_status_string
(
'Failed to load:
\'
{}
\'
'
.
format
(
path
))
self
.
refresh_display
()
if
not
self
.
__silent
:
self
.
refresh_display
()
print
(
'Failed to load config
\'
{}
\'
: {}'
.
format
(
path
,
e
))
return
False
self
.
set_status_string
(
'Opened config'
)
self
.
refresh_display
()
if
not
self
.
__silent
:
self
.
refresh_display
()
return
True
def
save_config
(
self
,
force_file_dialog
=
False
):
...
...
@@ -1154,19 +1167,39 @@ def main(argv=None):
type
=
str
,
help
=
'path to .config file to load'
)
if
"--silent"
in
argv
:
parser
.
add_argument
(
'--silent'
,
dest
=
'_silent_'
,
type
=
str
,
help
=
'silent mode, not show window'
)
args
=
parser
.
parse_args
(
argv
)
kconfig_path
=
args
.
kconfig
config_path
=
args
.
config
# Verify that Kconfig file exists
if
not
os
.
path
.
isfile
(
kconfig_path
):
raise
RuntimeError
(
'
\'
{}
\'
: no such file'
.
format
(
kconfig_path
))
# Parse Kconfig files
kconf
=
kconfiglib
.
Kconfig
(
filename
=
kconfig_path
)
mc
=
MenuConfig
(
kconf
)
# If config file was specified, load it
if
config_path
:
mc
.
open_config
(
config_path
)
tk
.
mainloop
()
if
"--silent"
not
in
argv
:
print
(
"In normal mode. Will show menuconfig window."
)
mc
=
MenuConfig
(
kconf
)
# If config file was specified, load it
if
config_path
:
mc
.
open_config
(
config_path
)
print
(
"Enter mainloop. Waiting..."
)
tk
.
mainloop
()
else
:
print
(
"In silent mode. Don`t show menuconfig window."
)
mc
=
MenuConfig
(
kconf
,
True
)
# If config file was specified, load it
if
config_path
:
mc
.
open_config
(
config_path
)
mc
.
_close_window
()
if
__name__
==
'__main__'
:
...
...
tools/ses.py
0 → 100644
浏览文件 @
62a7c59c
# SEGGER Embedded Studio Project Generator
import
os
import
sys
import
xml.etree.ElementTree
as
etree
from
xml.etree.ElementTree
import
SubElement
from
utils
import
_make_path_relative
from
utils
import
xml_indent
from
utils
import
ProjectInfo
def
SDKAddGroup
(
parent
,
name
,
files
,
project_path
):
# don't add an empty group
if
len
(
files
)
==
0
:
return
group
=
SubElement
(
parent
,
'folder'
,
attrib
=
{
'Name'
:
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
)
elm_attr_name
=
os
.
path
.
join
(
path
,
name
)
file
=
SubElement
(
group
,
'file'
,
attrib
=
{
'file_name'
:
elm_attr_name
})
return
group
def
SESProject
(
env
)
:
target
=
'project.emProject'
tree
=
etree
.
parse
(
'template.emProject'
)
# print(etree.dump(tree.getroot()))
# etree.dump(tree.getroot())
project
=
ProjectInfo
(
env
)
# print(project)
# return
project_path
=
os
.
path
.
abspath
(
env
[
'BSP_ROOT'
])
script
=
env
[
'project'
]
root
=
tree
.
getroot
()
out
=
file
(
target
,
'w'
)
out
.
write
(
'<!DOCTYPE CrossStudio_Project_File>
\n
'
)
CPPPATH
=
[]
CPPDEFINES
=
[]
LINKFLAGS
=
''
CCFLAGS
=
''
project_node
=
tree
.
find
(
'project'
)
for
group
in
script
:
# print(group)
group_tree
=
SDKAddGroup
(
project_node
,
group
[
'name'
],
group
[
'src'
],
project_path
)
# get each group's cc flags
if
group
.
has_key
(
'CCFLAGS'
)
and
group
[
'CCFLAGS'
]:
if
CCFLAGS
:
CCFLAGS
+=
' '
+
group
[
'CCFLAGS'
]
else
:
CCFLAGS
+=
group
[
'CCFLAGS'
]
# get each group's link flags
if
group
.
has_key
(
'LINKFLAGS'
)
and
group
[
'LINKFLAGS'
]:
if
LINKFLAGS
:
LINKFLAGS
+=
' '
+
group
[
'LINKFLAGS'
]
else
:
LINKFLAGS
+=
group
[
'LINKFLAGS'
]
# write include path, definitions and link flags
path
=
';'
.
join
([
_make_path_relative
(
project_path
,
os
.
path
.
normpath
(
i
))
for
i
in
project
[
'CPPPATH'
]])
path
=
path
.
replace
(
'
\\
'
,
'/'
)
defines
=
';'
.
join
(
set
(
project
[
'CPPDEFINES'
]))
node
=
tree
.
findall
(
'project/configuration'
)
for
item
in
node
:
if
item
.
get
(
'c_preprocessor_definitions'
):
item
.
set
(
'c_preprocessor_definitions'
,
defines
)
if
item
.
get
(
'c_user_include_directories'
):
item
.
set
(
'c_user_include_directories'
,
path
)
xml_indent
(
root
)
out
.
write
(
etree
.
tostring
(
root
,
encoding
=
'utf-8'
))
out
.
close
()
return
tools/utils.py
浏览文件 @
62a7c59c
...
...
@@ -245,7 +245,9 @@ def ProjectInfo(env):
return
proj
def
VersionCmp
(
ver1
,
ver2
):
la
=
ver1
.
split
(
'.'
)
la
=
[];
if
ver1
:
la
=
ver1
.
split
(
'.'
)
lb
=
ver2
.
split
(
'.'
)
f
=
0
if
len
(
la
)
>
len
(
lb
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录