Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
混口饭吃,
rt-thread
提交
de4fc407
R
rt-thread
项目概览
混口饭吃,
/
rt-thread
与 Fork 源项目一致
Fork自
Mr_Pangza / 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看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
de4fc407
编写于
7月 01, 2021
作者:
G
guo
提交者:
GitHub
7月 01, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #4835 from Guozhanxin/cmake-armclang
add scons --target=cmake-armclang
上级
ae3c272e
d500f2da
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
163 addition
and
44 deletion
+163
-44
bsp/stm32/stm32f412-st-nucleo/rtconfig.py
bsp/stm32/stm32f412-st-nucleo/rtconfig.py
+34
-0
bsp/stm32/stm32h750-artpi-h750/rtconfig.py
bsp/stm32/stm32h750-artpi-h750/rtconfig.py
+34
-0
bsp/stm32/stm32l475-atk-pandora/rtconfig.py
bsp/stm32/stm32l475-atk-pandora/rtconfig.py
+2
-2
libcpu/arm/cortex-m7/SConscript
libcpu/arm/cortex-m7/SConscript
+1
-1
tools/building.py
tools/building.py
+2
-1
tools/cmake.py
tools/cmake.py
+90
-40
未找到文件。
bsp/stm32/stm32f412-st-nucleo/rtconfig.py
浏览文件 @
de4fc407
...
...
@@ -94,6 +94,40 @@ elif PLATFORM == 'armcc':
POST_ACTION
=
'fromelf --bin $TARGET --output rtthread.bin
\n
fromelf -z $TARGET'
elif
PLATFORM
==
'armclang'
:
# toolchains
CC
=
'armclang'
CXX
=
'armclang'
AS
=
'armasm'
AR
=
'armar'
LINK
=
'armlink'
TARGET_EXT
=
'axf'
DEVICE
=
' --cpu Cortex-M4.fp '
CFLAGS
=
' --target=arm-arm-none-eabi -mcpu=cortex-m4 '
CFLAGS
+=
' -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 '
CFLAGS
+=
' -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar '
CFLAGS
+=
' -gdwarf-3 -ffunction-sections '
AFLAGS
=
DEVICE
+
' --apcs=interwork '
LFLAGS
=
DEVICE
+
' --info sizes --info totals --info unused --info veneers '
LFLAGS
+=
' --list rt-thread.map '
LFLAGS
+=
r
' --strict --scatter "board\linker_scripts\link.sct" '
CFLAGS
+=
' -I'
+
EXEC_PATH
+
'/ARM/ARMCLANG/include'
LFLAGS
+=
' --libpath='
+
EXEC_PATH
+
'/ARM/ARMCLANG/lib'
EXEC_PATH
+=
'/ARM/ARMCLANG/bin/'
if
BUILD
==
'debug'
:
CFLAGS
+=
' -g -O1'
# armclang recommend
AFLAGS
+=
' -g'
else
:
CFLAGS
+=
' -O2'
CXXFLAGS
=
CFLAGS
CFLAGS
+=
' -std=c99'
POST_ACTION
=
'fromelf --bin $TARGET --output rtthread.bin
\n
fromelf -z $TARGET'
elif
PLATFORM
==
'iar'
:
# toolchains
CC
=
'iccarm'
...
...
bsp/stm32/stm32h750-artpi-h750/rtconfig.py
浏览文件 @
de4fc407
...
...
@@ -94,6 +94,40 @@ elif PLATFORM == 'armcc':
POST_ACTION
=
'fromelf --bin $TARGET --output rtthread.bin
\n
fromelf -z $TARGET'
elif
PLATFORM
==
'armclang'
:
# toolchains
CC
=
'armclang'
CXX
=
'armclang'
AS
=
'armasm'
AR
=
'armar'
LINK
=
'armlink'
TARGET_EXT
=
'axf'
DEVICE
=
' --cpu Cortex-M7.fp.sp '
CFLAGS
=
' --target=arm-arm-none-eabi -mcpu=cortex-M7 '
CFLAGS
+=
' -mcpu=cortex-M7 -mfpu=fpv4-sp-d16 '
CFLAGS
+=
' -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar '
CFLAGS
+=
' -gdwarf-3 -ffunction-sections '
AFLAGS
=
DEVICE
+
' --apcs=interwork '
LFLAGS
=
DEVICE
+
' --info sizes --info totals --info unused --info veneers '
LFLAGS
+=
' --list rt-thread.map '
LFLAGS
+=
r
' --strict --scatter "board\linker_scripts\link.sct" '
CFLAGS
+=
' -I'
+
EXEC_PATH
+
'/ARM/ARMCLANG/include'
LFLAGS
+=
' --libpath='
+
EXEC_PATH
+
'/ARM/ARMCLANG/lib'
EXEC_PATH
+=
'/ARM/ARMCLANG/bin/'
if
BUILD
==
'debug'
:
CFLAGS
+=
' -g -O1'
# armclang recommend
AFLAGS
+=
' -g'
else
:
CFLAGS
+=
' -O2'
CXXFLAGS
=
CFLAGS
CFLAGS
+=
' -std=c99'
POST_ACTION
=
'fromelf --bin $TARGET --output rtthread.bin
\n
fromelf -z $TARGET'
elif
PLATFORM
==
'iar'
:
# toolchains
CC
=
'iccarm'
...
...
bsp/stm32/stm32l475-atk-pandora/rtconfig.py
浏览文件 @
de4fc407
...
...
@@ -91,7 +91,6 @@ elif PLATFORM == 'armcc':
CXXFLAGS
=
CFLAGS
CFLAGS
+=
' -std=c99'
POST_ACTION
=
'fromelf --bin $TARGET --output rtthread.bin
\n
fromelf -z $TARGET'
...
...
@@ -105,7 +104,7 @@ elif PLATFORM == 'armclang':
TARGET_EXT
=
'axf'
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
+=
' -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar '
CFLAGS
+=
' -gdwarf-3 -ffunction-sections '
...
...
@@ -125,6 +124,7 @@ elif PLATFORM == 'armclang':
CFLAGS
+=
' -O2'
CXXFLAGS
=
CFLAGS
CFLAGS
+=
' -std=c99'
POST_ACTION
=
'fromelf --bin $TARGET --output rtthread.bin
\n
fromelf -z $TARGET'
...
...
libcpu/arm/cortex-m7/SConscript
浏览文件 @
de4fc407
...
...
@@ -8,7 +8,7 @@ cwd = GetCurrentDir()
src
=
Glob
(
'*.c'
)
+
Glob
(
'*.cpp'
)
CPPPATH
=
[
cwd
]
if
rtconfig
.
PLATFORM
==
'armcc'
:
if
rtconfig
.
PLATFORM
==
'armcc'
or
rtconfig
.
PLATFORM
==
'armclang'
:
src
+=
Glob
(
'*_rvds.S'
)
if
rtconfig
.
PLATFORM
==
'gcc'
:
...
...
tools/building.py
浏览文件 @
de4fc407
...
...
@@ -258,6 +258,7 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [
'eclipse'
:(
'gcc'
,
'gcc'
),
'ses'
:
(
'gcc'
,
'gcc'
),
'cmake'
:(
'gcc'
,
'gcc'
),
'cmake-armclang'
:(
'keil'
,
'armclang'
),
'codelite'
:
(
'gcc'
,
'gcc'
)}
tgt_name
=
GetOption
(
'target'
)
...
...
@@ -883,7 +884,7 @@ def GenTargetProject(program = None):
from
codelite
import
TargetCodelite
TargetCodelite
(
Projects
,
program
)
if
GetOption
(
'target'
)
==
'cmake'
:
if
GetOption
(
'target'
)
==
'cmake'
or
GetOption
(
'target'
)
==
'cmake-armclang'
:
from
cmake
import
CMakeProject
CMakeProject
(
Env
,
Projects
)
...
...
tools/cmake.py
浏览文件 @
de4fc407
...
...
@@ -17,55 +17,101 @@ def GenerateCFiles(env,project):
info
=
utils
.
ProjectInfo
(
env
)
CC
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
CC
).
replace
(
'
\\
'
,
"/"
)
CXX
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
CXX
).
replace
(
'
\\
'
,
"/"
)
if
'CXX'
in
dir
(
rtconfig
):
CXX
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
CXX
).
replace
(
'
\\
'
,
"/"
)
else
:
CXX
=
''
AS
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
AS
).
replace
(
'
\\
'
,
"/"
)
AR
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
AR
).
replace
(
'
\\
'
,
"/"
)
LINK
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
LINK
).
replace
(
'
\\
'
,
"/"
)
SIZE
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
SIZE
).
replace
(
'
\\
'
,
"/"
)
OBJDUMP
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
OBJDUMP
).
replace
(
'
\\
'
,
"/"
)
OBJCOPY
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
OBJCPY
).
replace
(
'
\\
'
,
"/"
)
if
rtconfig
.
PLATFORM
==
'gcc'
:
SIZE
=
os
.
path
.
join
(
rtconfig
.
EXEC_PATH
,
rtconfig
.
SIZE
).
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
(
'
\\
'
,
"/"
)
CFLAGS
=
rtconfig
.
CFLAGS
.
replace
(
'
\\
'
,
"/"
).
replace
(
'
\"
'
,
"
\\\"
"
)
if
'CXXFLAGS'
in
dir
(
rtconfig
):
CXXFLAGS
=
rtconfig
.
CXXFLAGS
.
replace
(
'
\\
'
,
"/"
).
replace
(
'
\"
'
,
"
\\\"
"
)
else
:
CXXFLAGS
=
CFLAGS
AFLAGS
=
rtconfig
.
AFLAGS
.
replace
(
'
\\
'
,
"/"
).
replace
(
'
\"
'
,
"
\\\"
"
)
LFLAGS
=
rtconfig
.
LFLAGS
.
replace
(
'
\\
'
,
"/"
).
replace
(
'
\"
'
,
"
\\\"
"
)
if
"win32"
in
sys
.
platform
:
CC
+=
".exe"
CXX
+=
".exe"
if
CXX
!=
''
:
CXX
+=
".exe"
AS
+=
".exe"
AR
+=
".exe"
LINK
+=
".exe"
SIZE
+=
".exe"
OBJDUMP
+=
".exe"
OBJCOPY
+=
".exe"
if
rtconfig
.
PLATFORM
==
'gcc'
:
SIZE
+=
".exe"
OBJDUMP
+=
".exe"
OBJCOPY
+=
".exe"
elif
rtconfig
.
CROSS_TOOL
==
'keil'
:
FROMELF
+=
".exe"
if
not
os
.
path
.
exists
(
CC
)
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'
)
if
cm_file
:
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_PROCESSOR "
+
rtconfig
.
CPU
+
")
\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_CXX_COMPILER
\"
"
+
CXX
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_ASM_COMPILER
\"
"
+
AS
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_OBJCOPY
\"
"
+
OBJCOPY
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_SIZE
\"
"
+
SIZE
+
"
\"
)
\n\n
"
)
cm_file
.
write
(
"SET(CMAKE_C_FLAGS
\"
"
+
rtconfig
.
CFLAGS
.
replace
(
'
\\
'
,
"/"
)
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_CXX_FLAGS
\"
"
+
rtconfig
.
CXXFLAGS
.
replace
(
'
\\
'
,
"/"
)
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_ASM_FLAGS
\"
"
+
rtconfig
.
AFLAGS
.
replace
(
'
\\
'
,
"/"
)
+
"
\"
)
\n
"
)
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_CXX_STANDARD 14)
\n
"
)
cm_file
.
write
(
"PROJECT(rtthread C CXX ASM)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_C_FLAGS
\"
"
+
CFLAGS
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_ASM_FLAGS
\"
"
+
AFLAGS
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_C_COMPILER_WORKS TRUE)
\n\n
"
)
if
CXX
!=
''
:
cm_file
.
write
(
"SET(CMAKE_CXX_COMPILER
\"
"
+
CXX
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_CXX_FLAGS
\"
"
+
CXXFLAGS
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_CXX_COMPILER_WORKS TRUE)
\n\n
"
)
if
rtconfig
.
PLATFORM
==
'gcc'
:
cm_file
.
write
(
"SET(CMAKE_OBJCOPY
\"
"
+
OBJCOPY
+
"
\"
)
\n
"
)
cm_file
.
write
(
"SET(CMAKE_SIZE
\"
"
+
SIZE
+
"
\"
)
\n\n
"
)
elif
rtconfig
.
CROSS_TOOL
==
'keil'
:
cm_file
.
write
(
"SET(CMAKE_FROMELF
\"
"
+
FROMELF
+
"
\"
)
\n\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}/'
,
LFLAGS
)
+
LINKER_LIBS
+
"
\"
)
\n\n
"
)
if
CXX
!=
''
:
cm_file
.
write
(
"SET(CMAKE_CXX_STANDARD 14)
\n
"
)
cm_file
.
write
(
"PROJECT(rtthread C CXX ASM)
\n
"
)
else
:
cm_file
.
write
(
"PROJECT(rtthread C ASM)
\n
"
)
cm_file
.
write
(
"INCLUDE_DIRECTORIES(
\n
"
)
for
i
in
info
[
'CPPPATH'
]:
cm_file
.
write
(
"
\t
"
+
i
.
replace
(
"
\\
"
,
"/"
)
+
"
\n
"
)
cm_file
.
write
(
"
\t
"
+
i
.
replace
(
"
\\
"
,
"/"
)
+
"
\n
"
)
cm_file
.
write
(
")
\n\n
"
)
cm_file
.
write
(
"ADD_DEFINITIONS(
\n
"
)
for
i
in
info
[
'CPPDEFINES'
]:
cm_file
.
write
(
"
\t
-D"
+
i
+
"
\n
"
)
cm_file
.
write
(
"
\t
-D"
+
i
+
"
\n
"
)
cm_file
.
write
(
")
\n\n
"
)
cm_file
.
write
(
"SET(PROJECT_SOURCES
\n
"
)
...
...
@@ -73,23 +119,27 @@ def GenerateCFiles(env,project):
for
f
in
group
[
'src'
]:
cm_file
.
write
(
"
\t
"
+
os
.
path
.
normpath
(
f
.
rfile
().
abspath
).
replace
(
"
\\
"
,
"/"
)
+
"
\n
"
)
cm_file
.
write
(
")
\n\n
"
)
cm_file
.
write
(
"LINK_DIRECTORIES(
\n
"
)
for
group
in
project
:
if
'LIBPATH'
in
group
.
keys
():
for
f
in
group
[
'LIBPATH'
]:
cm_file
.
write
(
"
\t
"
+
f
.
replace
(
"
\\
"
,
"/"
)
+
"
\n
"
)
cm_file
.
write
(
")
\n\n
"
)
cm_file
.
write
(
"LINK_LIBRARIES(
\n
"
)
for
group
in
project
:
if
'LIBS'
in
group
.
keys
():
for
f
in
group
[
'LIBS'
]:
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)"
)
if
rtconfig
.
PLATFORM
==
'gcc'
:
cm_file
.
write
(
"LINK_DIRECTORIES(
\n
"
)
for
group
in
project
:
if
'LIBPATH'
in
group
.
keys
():
for
f
in
group
[
'LIBPATH'
]:
cm_file
.
write
(
"
\t
"
+
f
.
replace
(
"
\\
"
,
"/"
)
+
"
\n
"
)
cm_file
.
write
(
")
\n\n
"
)
cm_file
.
write
(
"LINK_LIBRARIES(
\n
"
)
for
group
in
project
:
if
'LIBS'
in
group
.
keys
():
for
f
in
group
[
'LIBS'
]:
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)"
)
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
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录