From 8cb34498eceef231927c444507b6787128c5f0d8 Mon Sep 17 00:00:00 2001 From: Nathan Ringo Date: Sun, 1 Sep 2024 20:49:26 -0500 Subject: Move everything over to the new organization. --- boards/configure.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 boards/configure.py (limited to 'boards/configure.py') diff --git a/boards/configure.py b/boards/configure.py new file mode 100644 index 0000000..5b01652 --- /dev/null +++ b/boards/configure.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +from argparse import ArgumentParser +from ninja.ninja_syntax import Writer as Ninja +from os import getenv +from pathlib import Path + + +def main(): + arg_parser = ArgumentParser() + arg_parser.add_argument("arch_name") + arg_parser.add_argument("board_name") + arg_parser.add_argument("libkernel") + arg_parser.add_argument("srcdir") + args = arg_parser.parse_args() + + libkernel = Path(args.libkernel).resolve() / "lib/libvernos_kernel.a" + srcdir = Path(args.srcdir).resolve() + objdir = Path("obj") + objdir.mkdir() + + linker_script = str(srcdir / f"{args.board_name}.ld") + + objs: list[str] = [] + with open("build.ninja", "w") as f: + ninja = Ninja(f) + + # Inherit some environment variables. + for var in ["AS", "ASFLAGS", "LD", "LDFLAGS"]: + ninja.variable(var, getenv(var)) + + # Add rules to assemble and link. + ninja.rule("as", "$AS $ASFLAGS -g -o $out $in") + ninja.rule("ld", f"$LD $LDFLAGS -T{linker_script} -o $out $in") + + for path in srcdir.iterdir(): + if path.suffix != ".s": + continue + obj = str(objdir / f"{path.stem}.o") + ninja.build(obj, "as", str(path)) + objs.append(obj) + ninja.build("kernel.elf", "ld", objs + [str(libkernel)]) + + +if __name__ == "__main__": + main() -- cgit v1.2.3