artiq/artiq/compiler/testbench/shlib.py

31 lines
824 B
Python
Raw Normal View History

2015-07-30 01:35:16 +08:00
import sys, os
from pythonparser import diagnostic
from ..module import Module, Source
2021-11-08 13:00:26 +08:00
from ..targets import RV32GTarget
2015-07-30 01:35:16 +08:00
def main():
if not len(sys.argv) > 1:
print("Expected at least one module filename", file=sys.stderr)
exit(1)
def process_diagnostic(diag):
print("\n".join(diag.render()), file=sys.stderr)
if diag.level in ("fatal", "error"):
exit(1)
engine = diagnostic.Engine()
engine.process = process_diagnostic
modules = []
for filename in sys.argv[1:]:
modules.append(Module(Source.from_filename(filename, engine=engine)))
2015-07-30 01:35:16 +08:00
2021-11-08 13:00:26 +08:00
llobj = RV32GTarget().compile_and_link(modules)
2015-07-30 01:35:16 +08:00
basename, ext = os.path.splitext(sys.argv[-1])
with open(basename + ".so", "wb") as f:
f.write(llobj)
if __name__ == "__main__":
main()