sharelib 输出逻辑完善

Signed-off-by: a1012112796 <1012112796@qq.com>
This commit is contained in:
2022-02-15 14:08:09 +08:00
parent 0209016824
commit 36da572a87
2 changed files with 57 additions and 13 deletions

View File

@@ -24,6 +24,7 @@
# group definition. # group definition.
# #
from math import fabs
import os import os
import sys import sys
import string import string
@@ -335,9 +336,12 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [
# parse rtconfig.h to get used component # parse rtconfig.h to get used component
PreProcessor = PatchedPreProcessor() PreProcessor = PatchedPreProcessor()
f = open(rtt_cfg, 'r') contents = ''
contents = f.read() if os.path.isfile(rtt_cfg):
f.close() f = open(rtt_cfg, 'r')
contents = f.read()
f.close()
PreProcessor.process_contents(contents) PreProcessor.process_contents(contents)
BuildOptions = PreProcessor.cpp_namespace BuildOptions = PreProcessor.cpp_namespace
@@ -725,7 +729,10 @@ def BuildLibInstallAction(target, source, env):
do_copy_file(lib_name, dst_name) do_copy_file(lib_name, dst_name)
break break
def DoBuilding(target, objects, is_rtt = False): def DoBuildingLib(lib, objects):
DoBuilding(lib, objects, build_lib=True)
def DoBuilding(target, objects, is_rtt = False, build_lib = False):
# merge all objects into one list # merge all objects into one list
def one_list(l): def one_list(l):
@@ -757,7 +764,11 @@ def DoBuilding(target, objects, is_rtt = False):
program = None program = None
# check whether special buildlib option # check whether special buildlib option
lib_name = GetOption('buildlib') if build_lib:
lib_name = target
else:
lib_name = GetOption('buildlib')
if lib_name: if lib_name:
objects = [] # remove all of objects objects = [] # remove all of objects
# build library with special component # build library with special component
@@ -790,6 +801,7 @@ def DoBuilding(target, objects, is_rtt = False):
EndBuilding(target, program, is_rtt) EndBuilding(target, program, is_rtt)
def GenTargetProject(program = None): def GenTargetProject(program = None):
need_exit = True
if GetOption('target') == 'mdk': if GetOption('target') == 'mdk':
from keil import MDKProject from keil import MDKProject
@@ -865,6 +877,8 @@ def GenTargetProject(program = None):
if GetOption('target') == 'cmake' or GetOption('target') == 'cmake-armclang': if GetOption('target') == 'cmake' or GetOption('target') == 'cmake-armclang':
from cmake import CMakeProject from cmake import CMakeProject
CMakeProject(Env,Projects) CMakeProject(Env,Projects)
return need_exit
def EndBuilding(target, program = None, is_rtt = False): def EndBuilding(target, program = None, is_rtt = False):
@@ -891,7 +905,7 @@ def EndBuilding(target, program = None, is_rtt = False):
Clean(target, 'gen_ports/gen_ports_cpp.cpp') Clean(target, 'gen_ports/gen_ports_cpp.cpp')
if GetOption('target'): if GetOption('target'):
GenTargetProject(program) need_exit = GenTargetProject(program)
BSP_ROOT = Dir('#').abspath BSP_ROOT = Dir('#').abspath
if GetOption('make-dist') and program != None: if GetOption('make-dist') and program != None:

View File

@@ -24,6 +24,28 @@ Return('group')
''' '''
SharelibMainSconscript = '''
# for package compiling
import os
from building import *
cwd = GetCurrentDir()
objs = []
list = os.listdir(cwd)
CPPPATH = [cwd]
Import('SHARE_LIB_HANDLE')
for d in list:
if SHARE_LIB_HANDLE.is_this_lib(d):
continue
path = os.path.join(cwd, d)
if os.path.isfile(os.path.join(path, 'SConscript')):
objs = objs + SConscript(os.path.join(d, 'SConscript'))
Return('objs')
'''
class SharelibItem: class SharelibItem:
''' '''
share lib handler share lib handler
@@ -117,13 +139,10 @@ class SharelibHandler:
kcfg.close() kcfg.close()
def __gen_ports(self, share_lib_path): def __gen_ports(self, share_lib_path):
if self._lib_name != "rt-thread":
return False
import json import json
init_c_path = os.path.join(os.getcwd(), "gen_ports/gen_ports_c.c") init_c_path = os.path.join(os.getcwd(), "gen_ports", "gen_ports_c.c")
init_cpp_path = os.path.join(os.getcwd(), "gen_ports/gen_ports_cpp.cpp") init_cpp_path = os.path.join(os.getcwd(), "gen_ports", "gen_ports_cpp.cpp")
finit_c = open(init_c_path, 'w+') finit_c = open(init_c_path, 'w+')
finit_cpp = open(init_cpp_path, 'w+') finit_cpp = open(init_cpp_path, 'w+')
@@ -175,12 +194,22 @@ class SharelibHandler:
finit_c.close() finit_c.close()
finit_cpp.close() finit_cpp.close()
def __init_sconscipt(self, share_lib_path):
def export(self, share_lib_path): port_file = os.path.join(share_lib_path, "SConscript")
if os.path.isfile(port_file):
return False
with open(port_file, 'w+') as pf:
pf.write(SharelibMainSconscript)
def export(self, share_lib_path, gen_ports = False):
reserved_subdir = ['.git', reserved_subdir = ['.git',
'README.md', '.gitignore', '.gitmodules', '.gitattributes', 'README.md', '.gitignore', '.gitmodules', '.gitattributes',
'.drone.yml'] '.drone.yml']
self.__init_sconscipt(share_lib_path)
dist_path = share_lib_path + '/' + self._lib_name dist_path = share_lib_path + '/' + self._lib_name
if os.path.exists(dist_path): if os.path.exists(dist_path):
for d in os.listdir(dist_path): for d in os.listdir(dist_path):
@@ -239,7 +268,8 @@ class SharelibHandler:
with open(dist_path + '/package.json','w+') as f: with open(dist_path + '/package.json','w+') as f:
json.dump(data,f, sort_keys=True, indent=4, separators=(',', ': ')) json.dump(data,f, sort_keys=True, indent=4, separators=(',', ': '))
self.__gen_ports(share_lib_path) if gen_ports:
self.__gen_ports(share_lib_path)
self.update_sharelib(share_lib_path) self.update_sharelib(share_lib_path)