X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/29891c3ccec4f1d28e0440d87ea2e2708377d2ee..bcc25888b3299758ad36721530cca3b899b7166c:/lunaix-os/scripts/build-tools/lbuild/contract.py diff --git a/lunaix-os/scripts/build-tools/lbuild/contract.py b/lunaix-os/scripts/build-tools/lbuild/contract.py index 643be14..0484947 100644 --- a/lunaix-os/scripts/build-tools/lbuild/contract.py +++ b/lunaix-os/scripts/build-tools/lbuild/contract.py @@ -31,8 +31,8 @@ class LunaBuildFile(Sandbox): def resolve(self): self.execute(self.__path) - self.__env.add_sources(self.__do_process(self.__srcs)) - self.__env.add_headers(self.__do_process(self.__hdrs)) + self.__env.add_sources(self.__srcs) + self.__env.add_headers(self.__hdrs) def __do_process(self, list): resolved = [] @@ -56,40 +56,44 @@ class LunaBuildFile(Sandbox): def __resolve_value(self, source): resolved = source - while not isinstance(resolved, str): + while isinstance(resolved, dict): if isinstance(resolved, dict): resolved = self.expand_select(resolved) else: self.__raise(f"entry with unknown type: {resolved}") - resolved = resolved.strip() - resolved = join_path(self.__dir, resolved) + if isinstance(resolved, list): + rs = [] + for file in resolved: + file = join_path(self.__dir, file) + file = self.__env.to_wspath(file) + rs.append(file) + else: + rs = join_path(self.__dir, resolved) + rs = [self.__env.to_wspath(rs)] - return self.__env.to_wspath(resolved) + return rs def import_buildfile(self, path): path = self.__resolve_value(path) - path = self.__env.to_wspath(path) - - if (os.path.isdir(path)): - path = os.path.join(path, "LBuild") - - if not os.path.exists(path): - self.__raise("Build file not exist: %s", path) + for p in path: + if (os.path.isdir(p)): + p = os.path.join(p, "LBuild") + + if not os.path.exists(p): + self.__raise("Build file not exist: %s", p) - if os.path.abspath(path) == os.path.abspath(self.__path): - self.__raise("self dependency detected") + if os.path.abspath(p) == os.path.abspath(self.__path): + self.__raise("self dependency detected") - LunaBuildFile(self.__env, path).resolve() + LunaBuildFile(self.__env, p).resolve() def export_sources(self, src): - if not isinstance(src, list): - src = [src] + src = self.__resolve_value(src) self.__srcs += src def export_headers(self, hdr): - if not isinstance(hdr, list): - hdr = [hdr] + hdr = self.__resolve_value(hdr) self.__hdrs += hdr def check_config(self, name):