Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
人间散章
rt-thread
提交
194e33a7
R
rt-thread
项目概览
人间散章
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
1
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
194e33a7
编写于
6月 30, 2021
作者:
G
guozhanxin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[tools] add scons --target=cmake-armclang
上级
ae3c272e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
69 addition
and
32 deletion
+69
-32
bsp/stm32/stm32l475-atk-pandora/rtconfig.py
bsp/stm32/stm32l475-atk-pandora/rtconfig.py
+2
-1
tools/building.py
tools/building.py
+2
-1
tools/cmake.py
tools/cmake.py
+65
-30
未找到文件。
bsp/stm32/stm32l475-atk-pandora/rtconfig.py
浏览文件 @
194e33a7
...
@@ -105,7 +105,7 @@ elif PLATFORM == 'armclang':
...
@@ -105,7 +105,7 @@ elif PLATFORM == 'armclang':
TARGET_EXT
=
'axf'
TARGET_EXT
=
'axf'
DEVICE
=
' --cpu Cortex-M4.fp '
DEVICE
=
' --cpu Cortex-M4.fp '
CFLAGS
=
' -
xc -std=c99 -
-target=arm-arm-none-eabi -mcpu=cortex-m4 '
CFLAGS
=
' --target=arm-arm-none-eabi -mcpu=cortex-m4 '
CFLAGS
+=
' -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 '
CFLAGS
+=
' -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 '
CFLAGS
+=
' -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar '
CFLAGS
+=
' -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar '
CFLAGS
+=
' -gdwarf-3 -ffunction-sections '
CFLAGS
+=
' -gdwarf-3 -ffunction-sections '
...
@@ -125,6 +125,7 @@ elif PLATFORM == 'armclang':
...
@@ -125,6 +125,7 @@ elif PLATFORM == 'armclang':
CFLAGS
+=
' -O2'
CFLAGS
+=
' -O2'
CXXFLAGS
=
CFLAGS
CXXFLAGS
=
CFLAGS
CFLAGS
+=
' -std=c99'
POST_ACTION
=
'fromelf --bin $TARGET --output rtthread.bin
\n
fromelf -z $TARGET'
POST_ACTION
=
'fromelf --bin $TARGET --output rtthread.bin
\n
fromelf -z $TARGET'
...
...
tools/building.py
浏览文件 @
194e33a7
...
@@ -258,6 +258,7 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [
...
@@ -258,6 +258,7 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [
'eclipse'
:(
'gcc'
,
'gcc'
),
'eclipse'
:(
'gcc'
,
'gcc'
),
'ses'
:
(
'gcc'
,
'gcc'
),
'ses'
:
(
'gcc'
,
'gcc'
),
'cmake'
:(
'gcc'
,
'gcc'
),
'cmake'
:(
'gcc'
,
'gcc'
),
'cmake-armclang'
:(
'keil'
,
'armclang'
),
'codelite'
:
(
'gcc'
,
'gcc'
)}
'codelite'
:
(
'gcc'
,
'gcc'
)}
tgt_name
=
GetOption
(
'target'
)
tgt_name
=
GetOption
(
'target'
)
...
@@ -883,7 +884,7 @@ def GenTargetProject(program = None):
...
@@ -883,7 +884,7 @@ def GenTargetProject(program = None):
from
codelite
import
TargetCodelite
from
codelite
import
TargetCodelite
TargetCodelite
(
Projects
,
program
)
TargetCodelite
(
Projects
,
program
)
if
GetOption
(
'target'
)
==
'cmake'
:
if
GetOption
(
'target'
)
==
'cmake'
or
GetOption
(
'target'
)
==
'cmake-armclang'
:
from
cmake
import
CMakeProject
from
cmake
import
CMakeProject
CMakeProject
(
Env
,
Projects
)
CMakeProject
(
Env
,
Projects
)
...
...
tools/cmake.py
浏览文件 @
194e33a7
...
@@ -21,9 +21,12 @@ def GenerateCFiles(env,project):
...
@@ -21,9 +21,12 @@ def GenerateCFiles(env,project):
AS
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
AS
).
replace
(
'
\\
'
,
"/"
)
AS
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
AS
).
replace
(
'
\\
'
,
"/"
)
AR
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
AR
).
replace
(
'
\\
'
,
"/"
)
AR
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
AR
).
replace
(
'
\\
'
,
"/"
)
LINK
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
LINK
).
replace
(
'
\\
'
,
"/"
)
LINK
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
LINK
).
replace
(
'
\\
'
,
"/"
)
SIZE
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
SIZE
).
replace
(
'
\\
'
,
"/"
)
if
rtconfig
.
PLATFORM
==
'gcc'
:
OBJDUMP
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
OBJDUMP
).
replace
(
'
\\
'
,
"/"
)
SIZE
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
SIZE
).
replace
(
'
\\
'
,
"/"
)
OBJCOPY
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
OBJCPY
).
replace
(
'
\\
'
,
"/"
)
OBJDUMP
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
OBJDUMP
).
replace
(
'
\\
'
,
"/"
)
OBJCOPY
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
OBJCPY
).
replace
(
'
\\
'
,
"/"
)
elif
rtconfig
.
CROSS_TOOL
==
'keil'
:
FROMELF
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
'fromelf'
).
replace
(
'
\\
'
,
"/"
)
if
"win32"
in
sys
.
platform
:
if
"win32"
in
sys
.
platform
:
CC
+=
".exe"
CC
+=
".exe"
...
@@ -31,28 +34,56 @@ def GenerateCFiles(env,project):
...
@@ -31,28 +34,56 @@ def GenerateCFiles(env,project):
AS
+=
".exe"
AS
+=
".exe"
AR
+=
".exe"
AR
+=
".exe"
LINK
+=
".exe"
LINK
+=
".exe"
SIZE
+=
".exe"
if
rtconfig
.
PLATFORM
==
'gcc'
:
OBJDUMP
+=
".exe"
SIZE
+=
".exe"
OBJCOPY
+=
".exe"
OBJDUMP
+=
".exe"
OBJCOPY
+=
".exe"
elif
rtconfig
.
CROSS_TOOL
==
'keil'
:
FROMELF
+=
".exe"
if
not
os
.
path
.
exists
(
CC
)
or
not
os
.
path
.
exists
(
CXX
)
or
not
os
.
path
.
exists
(
AS
)
or
not
os
.
path
.
exists
(
AR
)
or
not
os
.
path
.
exists
(
LINK
):
print
(
"'Cannot found toolchain directory, please check RTT_CC and RTT_EXEC_PATH'"
)
sys
.
exit
(
-
1
)
cm_file
=
open
(
'CMakeLists.txt'
,
'w'
)
cm_file
=
open
(
'CMakeLists.txt'
,
'w'
)
if
cm_file
:
if
cm_file
:
cm_file
.
write
(
"CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
\n\n
"
)
cm_file
.
write
(
"CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
\n\n
"
)
cm_file
.
write
(
"SET(CMAKE_SYSTEM_NAME Generic)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_SYSTEM_NAME Generic)
\n
"
)
cm_file
.
write
(
"set(CMAKE_SYSTEM_PROCESSOR "
+
rtconfig
.
CPU
+
")
\n
"
)
cm_file
.
write
(
"#SET(CMAKE_VERBOSE_MAKEFILE ON)
\n\n
"
)
cm_file
.
write
(
"#SET(CMAKE_VERBOSE_MAKEFILE ON)
\n\n
"
)
cm_file
.
write
(
"SET(CMAKE_C_COMPILER
\"
"
+
CC
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_C_COMPILER
\"
"
+
CC
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_CXX_COMPILER
\"
"
+
CXX
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_CXX_COMPILER
\"
"
+
CXX
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_ASM_COMPILER
\"
"
+
AS
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_ASM_COMPILER
\"
"
+
AS
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_OBJCOPY
\"
"
+
OBJCOPY
+
"
\"
)
\n
"
)
cm_file
.
write
(
"set(CMAKE_C_COMPILER_WORKS TRUE)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_SIZE
\"
"
+
SIZE
+
"
\"
)
\n\n
"
)
cm_file
.
write
(
"set(CMAKE_CXX_COMPILER_WORKS TRUE)
\n\n
"
)
if
rtconfig
.
PLATFORM
==
'gcc'
:
cm_file
.
write
(
"SET(CMAKE_C_FLAGS
\"
"
+
rtconfig
.
CFLAGS
.
replace
(
'
\\
'
,
"/"
)
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_OBJCOPY
\"
"
+
OBJCOPY
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_CXX_FLAGS
\"
"
+
rtconfig
.
CXXFLAGS
.
replace
(
'
\\
'
,
"/"
)
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_SIZE
\"
"
+
SIZE
+
"
\"
)
\n\n
"
)
cm_file
.
write
(
"SET(CMAKE_ASM_FLAGS
\"
"
+
rtconfig
.
AFLAGS
.
replace
(
'
\\
'
,
"/"
)
+
"
\"
)
\n
"
)
elif
rtconfig
.
CROSS_TOOL
==
'keil'
:
cm_file
.
write
(
"SET(CMAKE_EXE_LINKER_FLAGS
\"
"
+
re
.
sub
(
'-T(\s*)'
,
'-T ${CMAKE_SOURCE_DIR}/'
,
rtconfig
.
LFLAGS
.
replace
(
'
\\
'
,
"/"
))
+
"
\"
)
\n\n
"
)
cm_file
.
write
(
"SET(CMAKE_FROMELF
\"
"
+
FROMELF
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_C_FLAGS
\"
"
+
rtconfig
.
CFLAGS
.
replace
(
'
\\
'
,
"/"
).
replace
(
'
\"
'
,
"
\\\"
"
)
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_CXX_FLAGS
\"
"
+
rtconfig
.
CXXFLAGS
.
replace
(
'
\\
'
,
"/"
).
replace
(
'
\"
'
,
"
\\\"
"
)
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_ASM_FLAGS
\"
"
+
rtconfig
.
AFLAGS
.
replace
(
'
\\
'
,
"/"
).
replace
(
'
\"
'
,
"
\\\"
"
)
+
"
\"
)
\n
"
)
LINKER_FLAGS
=
''
LINKER_LIBS
=
''
if
rtconfig
.
PLATFORM
==
'gcc'
:
LINKER_FLAGS
+=
'-T'
elif
rtconfig
.
CROSS_TOOL
==
'keil'
:
LINKER_FLAGS
+=
'--scatter'
for
group
in
project
:
if
'LIBPATH'
in
group
.
keys
():
for
f
in
group
[
'LIBPATH'
]:
LINKER_LIBS
+=
' --userlibpath '
+
f
.
replace
(
"
\\
"
,
"/"
)
for
group
in
project
:
if
'LIBS'
in
group
.
keys
():
for
f
in
group
[
'LIBS'
]:
LINKER_LIBS
+=
' '
+
f
.
replace
(
"
\\
"
,
"/"
)
+
'.lib'
cm_file
.
write
(
"SET(CMAKE_EXE_LINKER_FLAGS
\"
"
+
re
.
sub
(
LINKER_FLAGS
+
'(\s*)'
,
LINKER_FLAGS
+
' ${CMAKE_SOURCE_DIR}/'
,
rtconfig
.
LFLAGS
.
replace
(
'
\\
'
,
"/"
).
replace
(
'
\"
'
,
"
\\\"
"
))
+
LINKER_LIBS
+
"
\"
)
\n\n
"
)
cm_file
.
write
(
"SET(CMAKE_CXX_STANDARD 14)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_CXX_STANDARD 14)
\n
"
)
cm_file
.
write
(
"PROJECT(rtthread C CXX ASM)
\n
"
)
cm_file
.
write
(
"PROJECT(rtthread C CXX ASM)
\n
"
)
...
@@ -74,22 +105,26 @@ def GenerateCFiles(env,project):
...
@@ -74,22 +105,26 @@ def GenerateCFiles(env,project):
cm_file
.
write
(
"
\t
"
+
os
.
path
.
normpath
(
f
.
rfile
().
abspath
).
replace
(
"
\\
"
,
"/"
)
+
"
\n
"
)
cm_file
.
write
(
"
\t
"
+
os
.
path
.
normpath
(
f
.
rfile
().
abspath
).
replace
(
"
\\
"
,
"/"
)
+
"
\n
"
)
cm_file
.
write
(
")
\n\n
"
)
cm_file
.
write
(
")
\n\n
"
)
cm_file
.
write
(
"LINK_DIRECTORIES(
\n
"
)
if
rtconfig
.
PLATFORM
==
'gcc'
:
for
group
in
project
:
cm_file
.
write
(
"LINK_DIRECTORIES(
\n
"
)
if
'LIBPATH'
in
group
.
keys
():
for
group
in
project
:
for
f
in
group
[
'LIBPATH'
]:
if
'LIBPATH'
in
group
.
keys
():
cm_file
.
write
(
"
\t
"
+
f
.
replace
(
"
\\
"
,
"/"
)
+
"
\n
"
)
for
f
in
group
[
'LIBPATH'
]:
cm_file
.
write
(
")
\n\n
"
)
cm_file
.
write
(
"
\t
"
+
f
.
replace
(
"
\\
"
,
"/"
)
+
"
\n
"
)
cm_file
.
write
(
")
\n\n
"
)
cm_file
.
write
(
"LINK_LIBRARIES(
\n
"
)
for
group
in
project
:
cm_file
.
write
(
"LINK_LIBRARIES(
\n
"
)
if
'LIBS'
in
group
.
keys
():
for
group
in
project
:
for
f
in
group
[
'LIBS'
]:
if
'LIBS'
in
group
.
keys
():
cm_file
.
write
(
"
\t
"
+
"{}
\n
"
.
format
(
f
.
replace
(
"
\\
"
,
"/"
)))
for
f
in
group
[
'LIBS'
]:
cm_file
.
write
(
")
\n\n
"
)
cm_file
.
write
(
"
\t
"
+
"{}
\n
"
.
format
(
f
.
replace
(
"
\\
"
,
"/"
)))
cm_file
.
write
(
")
\n\n
"
)
cm_file
.
write
(
"ADD_EXECUTABLE(${CMAKE_PROJECT_NAME}.elf ${PROJECT_SOURCES})
\n
"
)
cm_file
.
write
(
"ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME}.elf POST_BUILD
\n
COMMAND ${CMAKE_OBJCOPY} -O binary ${CMAKE_PROJECT_NAME}.elf ${CMAKE_PROJECT_NAME}.bin COMMAND ${CMAKE_SIZE} ${CMAKE_PROJECT_NAME}.elf)"
)
cm_file
.
write
(
"ADD_EXECUTABLE(${CMAKE_PROJECT_NAME}.elf ${PROJECT_SOURCES})
\n
"
)
cm_file
.
write
(
"ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME}.elf POST_BUILD
\n
COMMAND ${CMAKE_OBJCOPY} -O binary ${CMAKE_PROJECT_NAME}.elf ${CMAKE_PROJECT_NAME}.bin COMMAND ${CMAKE_SIZE} ${CMAKE_PROJECT_NAME}.elf)"
)
elif
rtconfig
.
CROSS_TOOL
==
'keil'
:
cm_file
.
write
(
"ADD_EXECUTABLE(${CMAKE_PROJECT_NAME} ${PROJECT_SOURCES})
\n
"
)
cm_file
.
write
(
"ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD
\n
COMMAND ${CMAKE_FROMELF} --bin ${CMAKE_PROJECT_NAME}.elf --output ${CMAKE_PROJECT_NAME}.bin COMMAND ${CMAKE_FROMELF} -z ${CMAKE_PROJECT_NAME}.elf)"
)
cm_file
.
close
()
cm_file
.
close
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录