PCI 16x50 UART Controller, O2 Enablement (#39)
[lunaix-os.git] / lunaix-os / scripts / build-tools / lcfg / builtins.py
1 from .api import contextual, builtin
2 from .lcnodes import LCFuncNode, LCTermNode, LCModuleNode
3 from lib.utils import join_path
4 import os
5
6 @contextual()
7 def v(env, caller, term):
8     node = env.lookup_node(term.__name__)
9     env.dependency().add(node, caller)
10     return env.resolve_symbol(node.get_name())
11
12 @contextual(caller_type=[LCModuleNode])
13 def include(env, caller, file):
14     fobj = caller.get_fo()
15     path = os.path.dirname(fobj.filename())
16     path = join_path(path, file)
17     
18     if os.path.isdir(path):
19         path = join_path(path, "LConfig")
20
21     env.resolve_module(path)
22
23 @contextual("type", caller_type=[LCTermNode])
24 def term_type(env, caller, type):
25     caller.set_type(type)
26
27 @contextual("add_to_collection", caller_type=[LCFuncNode])
28 def parent(env, caller, ref):
29     sym = env.lookup_node(ref.__name__)
30
31     caller.set_parent(sym)
32
33 @contextual(caller_type=[LCTermNode])
34 def default(env, caller, val):
35     caller.set_default(val)
36
37 @contextual(caller_type=[LCTermNode])
38 def set_value(env, caller, val):
39     caller.set_value(val)
40
41 @builtin()
42 def env(env, key, default=None):
43     return os.getenv(key, default)