1 from lib.utils import join_path
4 class BuildEnvironment:
5 def __init__(self, workspace_dir, generator) -> None:
6 self.__config_provider = None
10 self.__ws_dir = workspace_dir
11 self.__ext_object = {}
12 self.__ext_function = {}
13 self.__generator = generator
15 def set_config_provider(self, provider):
16 self.__config_provider = provider
18 def config_provider(self):
19 return self.__config_provider
21 def add_sources(self, sources):
22 self.__sources += sources
24 def add_headers(self, sources):
26 if not os.path.isdir(h):
27 self.__headers.append(h)
29 self.__inc_dir.append(h)
31 def to_wspath(self, file):
32 path = join_path(self.__ws_dir, file)
33 return os.path.relpath(path, self.__ws_dir)
36 self.__generator.generate(self)
38 def get_object(self, key, _default=None):
39 return _default if key not in self.__ext_object else self.__ext_object[key]
41 def set_object(self, key, object):
42 self.__ext_object[key] = object
45 return list(self.__sources)
48 return list(self.__headers)
51 return list(self.__inc_dir)
53 def add_external_func(self, function):
54 name = function.__name__
55 invk = lambda *args, **kwargs: function(self, *args, **kwargs)
56 self.__ext_function[name] = invk
58 def external_func_table(self):
59 return self.__ext_function