1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/notrynohigh-BabyOS

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
b_config.py 4.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
notrynohigh Отправлено 2 лет назад b91ba15
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os, sys
import shutil
import re
from kconfiglib import Kconfig
from menuconfig import menuconfig
def mconf_set_env(argv):
"""
Set Kconfig Env
"""
os.environ["MENUCONFIG_STYLE"] = "default selection=fg:white,bg:blue"
os.environ["KCONFIG_CONFIG"] = os.path.join(".bconfig")
os.environ["KCONFIG_CONFIG_HEADER"] = "# Generated by BabyOS Configuration"
os.environ["KCONFIG_AUTOHEADER"] = os.path.join("b_config.h")
os.environ["CONFIG_"] = ""
def mconfig(argv):
print(argv[0])
kconf_fd = open("Kconfig", 'w+')
kconf_list = "mainmenu " + "\"BabyOS Configuration\" \n"
kconf_list += "source " + "\"" + argv[1] + "/core/Kconfig" + "\"" + "\n"
kconf_list += "source " + "\"" + argv[1] + "/hal/Kconfig" + "\"" + "\n"
kconf_list += "source " + "\"" + argv[1] + "/mcu/Kconfig" + "\"" + "\n"
kconf_list += "source " + "\"" + argv[1] + "/algorithm/Kconfig" + "\"" + "\n"
kconf_list += "source " + "\"" + argv[1] + "/drivers/Kconfig" + "\"" + "\n"
kconf_list += "source " + "\"" + argv[1] + "/modules/Kconfig" + "\"" + "\n"
kconf_list += "source " + "\"" + argv[1] + "/thirdparty/Kconfig" + "\"" + "\n"
kconf_list += "source " + "\"" + argv[1] + "/utils/Kconfig" + "\"" + "\n"
kconf_list += "source " + "\"" + argv[1] + "/services/Kconfig" + "\"" + "\n"
print(kconf_list)
kconf_fd.write(kconf_list)
kconf_fd.close()
#parent_pid = os.getppid()
#parent_name = psutil.Process(parent_pid).name()
#print(psutil.Process(parent_pid).name())
#if parent_name.find('cmd.exe') < 0:
mconf_set_env(argv)
kconf = Kconfig(filename="./Kconfig")
menuconfig(kconf)
kconf.write_autoconf()
bconf_fd = open("b_config.h", 'r')
bconf_data = bconf_fd.read()
bconf_fd.close()
print(bconf_data)
bconf_new_data = "#ifndef __B_CONFIG_H__ \n"
bconf_new_data += "#define __B_CONFIG_H__ \n\n\n"
bconf_new_data += bconf_data
bconf_new_data += "\n\n#include \"b_type.h\" \n\n"
bconf_new_data += "#endif \n\n"
bconf_fd = open("b_config.h", 'w')
bconf_fd.write(bconf_new_data)
bconf_fd.close()
os.remove("Kconfig")
def find_files(dirs, des):
source_file = []
source_file_des = []
for d in dirs:
files = os.listdir(d)
for file_name in files:
# 检查文件扩展名是否为.c或.h
if file_name.endswith('.c') or file_name.endswith('.h') or file_name.endswith('.inc'):
# 构建源文件和目标文件的完整路径
source_file.append(os.path.join(d, file_name))
source_file_des.append(os.path.join(des, file_name))
return source_file,source_file_des
def clear_directory(directory):
# 获取目录中的所有文件和子目录
for filename in os.listdir(directory):
file_path = os.path.join(directory, filename)
# 判断是否是文件
if os.path.isfile(file_path):
# 删除文件
os.remove(file_path)
# 如果是子目录,则递归清空子目录中的文件
elif os.path.isdir(file_path):
clear_directory(file_path)
def process_includes(file_path):
with open(file_path, 'r') as f:
content = f.read()
# 使用正则表达式匹配所有#include语句,并去掉路径部分
pattern = r'#include\s+"(\.\./)*(\S*/)*(.+?)"'
content = re.sub(pattern, r'#include "\3"', content)
with open(file_path, 'w') as f:
f.write(content)
def cp_arm_2d_file(bos_dir):
arm_2d_dir = bos_dir + "/thirdparty/arm-2d/"
tmp_dir = arm_2d_dir + "bos_arm-2d/"
if not os.path.exists(tmp_dir):
os.makedirs(tmp_dir)
else:
print("bos_arm-2d exist !")
return
arm_2d_file_dir = [arm_2d_dir + "Helper/Source/", arm_2d_dir + "Helper/Include/",
arm_2d_dir + "Library/Source/", arm_2d_dir + "Library/Include/",
arm_2d_dir + "examples/[template][babyos]/",
arm_2d_dir + "examples/common/controls/",
arm_2d_dir + "examples/common/asset/"]
arm_2d_files,tmp_dir_files = find_files(arm_2d_file_dir, tmp_dir)
for i in range(len(arm_2d_files)):
shutil.copy2(arm_2d_files[i], tmp_dir_files[i])
process_includes(tmp_dir_files[i])
if __name__ == "__main__":
mconfig(sys.argv)
cp_arm_2d_file(sys.argv[1])

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/notrynohigh-BabyOS.git
git@gitlife.ru:oschina-mirror/notrynohigh-BabyOS.git
oschina-mirror
notrynohigh-BabyOS
notrynohigh-BabyOS
master