xref: /freebsd/contrib/llvm-project/lldb/bindings/python/createPythonInit.py (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
1130d950cSDimitry Andricimport os
2130d950cSDimitry Andricimport sys
3130d950cSDimitry Andric
4130d950cSDimitry AndricpkgRelDir = sys.argv[1]
5130d950cSDimitry AndricpkgFiles = sys.argv[2:]
6130d950cSDimitry Andric
7130d950cSDimitry AndricgetFileName = lambda f: os.path.splitext(os.path.basename(f))[0]
8*5f757f3fSDimitry AndricimportNames = ", ".join('"{}"'.format(getFileName(f)) for f in pkgFiles)
9130d950cSDimitry Andric
10130d950cSDimitry Andricscript = """__all__ = [{import_names}]
11130d950cSDimitry Andricfor x in __all__:
12130d950cSDimitry Andric  __import__('lldb.{pkg_name}.' + x)
1381ad6265SDimitry Andric
1481ad6265SDimitry Andricdef __lldb_init_module(debugger, internal_dict):
1581ad6265SDimitry Andric  import lldb
1681ad6265SDimitry Andric  for x in __all__:
1781ad6265SDimitry Andric    submodule = getattr(lldb.{pkg_name}, x)
1881ad6265SDimitry Andric    lldb_init = getattr(submodule, '__lldb_init_module', None)
1981ad6265SDimitry Andric    if lldb_init:
2081ad6265SDimitry Andric      lldb_init(debugger, internal_dict)
21*5f757f3fSDimitry Andric""".format(
22*5f757f3fSDimitry Andric    import_names=importNames, pkg_name=pkgRelDir.replace("/", ".")
23*5f757f3fSDimitry Andric)
24130d950cSDimitry Andric
25130d950cSDimitry AndricpkgIniFile = os.path.normpath(os.path.join(pkgRelDir, "__init__.py"))
26130d950cSDimitry Andricwith open(pkgIniFile, "w") as f:
27130d950cSDimitry Andric    f.write(script)
28