feat: 添加注释
parent
827a1a6466
commit
738de1b60e
2
Kconfig
2
Kconfig
|
@ -16,7 +16,7 @@ config PKGS_DIR
|
||||||
default "packages"
|
default "packages"
|
||||||
|
|
||||||
source "$RTT_DIR/Kconfig"
|
source "$RTT_DIR/Kconfig"
|
||||||
#source "$PKGS_DIR/Kconfig"
|
source "$PKGS_DIR/Kconfig"
|
||||||
source "libraries/Kconfig"
|
source "libraries/Kconfig"
|
||||||
source "board/Kconfig"
|
source "board/Kconfig"
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ int main(void)
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
rt_thread_delay(1000);
|
||||||
/* code */
|
/* code */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,25 +44,34 @@ def is_pkg_special_config(config_str):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# 从.config文件生成rtconfig.h,在Kconfig中如果默认为n,则在.config中会以#开头,即被注释掉。因此,只有=y的才会被添加到.config文件中
|
||||||
def mk_rtconfig(filename):
|
def mk_rtconfig(filename):
|
||||||
|
|
||||||
|
# 打开 .config 文件,以读取其中的配置选项。
|
||||||
try:
|
try:
|
||||||
config = open(filename, 'r')
|
config = open(filename, 'r')
|
||||||
except:
|
except:
|
||||||
print('open config:%s failed' % filename)
|
print('open config:%s failed' % filename)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# 打开 rtconfig.h 文件,以写入转换后的宏定义。
|
||||||
rtconfig = open('rtconfig.h', 'w')
|
rtconfig = open('rtconfig.h', 'w')
|
||||||
rtconfig.write('#ifndef RT_CONFIG_H__\n')
|
rtconfig.write('#ifndef RT_CONFIG_H__\n')
|
||||||
rtconfig.write('#define RT_CONFIG_H__\n\n')
|
rtconfig.write('#define RT_CONFIG_H__\n\n')
|
||||||
|
|
||||||
|
# 定义一个空行变量。
|
||||||
empty_line = 1
|
empty_line = 1
|
||||||
|
|
||||||
|
# 遍历 .config 文件中的每一行。
|
||||||
for line in config:
|
for line in config:
|
||||||
|
# 移除行首的空格,以及行尾的换行符和回车符。
|
||||||
line = line.lstrip(' ').replace('\n', '').replace('\r', '')
|
line = line.lstrip(' ').replace('\n', '').replace('\r', '')
|
||||||
|
|
||||||
|
# 如果该行为空行,则跳过。
|
||||||
if len(line) == 0:
|
if len(line) == 0:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# 如果该行是以 "#" 开头的注释行,则将该行中的 CONFIG_ 前缀替换为空格,并添加到 rtconfig.h 文件中。
|
||||||
if line[0] == '#':
|
if line[0] == '#':
|
||||||
if len(line) == 1:
|
if len(line) == 1:
|
||||||
if empty_line:
|
if empty_line:
|
||||||
|
@ -80,6 +89,7 @@ def mk_rtconfig(filename):
|
||||||
|
|
||||||
empty_line = 0
|
empty_line = 0
|
||||||
else:
|
else:
|
||||||
|
# 否则,将该行转换为宏定义,并添加到 rtconfig.h 文件中。
|
||||||
empty_line = 0
|
empty_line = 0
|
||||||
setting = line.split('=')
|
setting = line.split('=')
|
||||||
if len(setting) >= 2:
|
if len(setting) >= 2:
|
||||||
|
@ -95,9 +105,11 @@ def mk_rtconfig(filename):
|
||||||
else:
|
else:
|
||||||
rtconfig.write('#define %s %s\n' % (setting[0], re.findall(r"^.*?=(.*)$",line)[0]))
|
rtconfig.write('#define %s %s\n' % (setting[0], re.findall(r"^.*?=(.*)$",line)[0]))
|
||||||
|
|
||||||
|
# 如果 .config 文件中有 rtconfig_project.h 文件,则将其包含在生成的 rtconfig.h 文件中。
|
||||||
if os.path.isfile('rtconfig_project.h'):
|
if os.path.isfile('rtconfig_project.h'):
|
||||||
rtconfig.write('#include "rtconfig_project.h"\n')
|
rtconfig.write('#include "rtconfig_project.h"\n')
|
||||||
|
|
||||||
|
# 在文件的末尾添加 RT_CONFIG_H__ 宏定义,以防止头文件被多次包含。
|
||||||
rtconfig.write('\n')
|
rtconfig.write('\n')
|
||||||
rtconfig.write('#endif\n')
|
rtconfig.write('#endif\n')
|
||||||
rtconfig.close()
|
rtconfig.close()
|
||||||
|
@ -242,16 +254,22 @@ def exclude_utestcases(RTT_ROOT):
|
||||||
def menuconfig(RTT_ROOT):
|
def menuconfig(RTT_ROOT):
|
||||||
|
|
||||||
# Exclude utestcases
|
# Exclude utestcases
|
||||||
|
# 排除 utestcases 目录,因为该目录不需要在配置界面中进行配置。
|
||||||
exclude_utestcases(RTT_ROOT)
|
exclude_utestcases(RTT_ROOT)
|
||||||
|
|
||||||
|
# 构建 Kconfig 工具
|
||||||
kconfig_dir = os.path.join(RTT_ROOT, 'tools', 'kconfig-frontends')
|
kconfig_dir = os.path.join(RTT_ROOT, 'tools', 'kconfig-frontends')
|
||||||
os.system('scons -C ' + kconfig_dir)
|
os.system('scons -C ' + kconfig_dir)
|
||||||
|
|
||||||
|
# 设置 PKGS_ROOT 环境变量
|
||||||
touch_env()
|
touch_env()
|
||||||
env_dir = get_env_dir()
|
env_dir = get_env_dir()
|
||||||
if isinstance(env_dir, str):
|
if isinstance(env_dir, str):
|
||||||
os.environ['PKGS_ROOT'] = os.path.join(env_dir, 'packages')
|
os.environ['PKGS_ROOT'] = os.path.join(env_dir, 'packages')
|
||||||
|
|
||||||
|
# 检查 .config 文件是否已经生成,并检查 .config.old 文件是否存在。
|
||||||
|
# 如果两个文件的 MD5 值相同,则表示用户没有更改配置选项。
|
||||||
|
# 否则,使用新的 .config 文件生成 RT-Thread 的配置文件 rtconfig.h,并将新的 .config 文件复制到 .config.old 中保存。
|
||||||
fn = '.config'
|
fn = '.config'
|
||||||
fn_old = '.config.old'
|
fn_old = '.config.old'
|
||||||
|
|
||||||
|
@ -266,6 +284,7 @@ def menuconfig(RTT_ROOT):
|
||||||
else:
|
else:
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
|
||||||
|
# 如果两个文件的 MD5 值不同,则使用新的 .config 文件生成 RT-Thread 的配置文件 rtconfig.h,并将新的 .config 文件复制到 .config.old 中保存。
|
||||||
# make rtconfig.h
|
# make rtconfig.h
|
||||||
if diff_eq == False:
|
if diff_eq == False:
|
||||||
shutil.copyfile(fn, fn_old)
|
shutil.copyfile(fn, fn_old)
|
||||||
|
|
Loading…
Reference in New Issue