From fca570a163e716998ecec88e207903c6e9104941 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Sat, 10 Aug 2024 23:29:21 -0700 Subject: [PATCH] [scripts] Make j6libc.py into the codegen package j6libc.py was initially made for libc to generate stdint.h, but it gained a few things that aren't libc-specific. Move it to a package and split the int-types-specific code into codegen.int_types. --- scripts/codegen/__init__.py | 16 ++++++++++++++++ scripts/{j6libc.py => codegen/int_types.py} | 13 ------------- src/libraries/libc/include/errno.h.cog | 4 ++-- src/libraries/libc/include/inttypes.h.cog | 2 +- src/libraries/libc/include/stdatomic.h.cog | 2 +- src/libraries/libc_free/include/stdint.h.cog | 2 +- 6 files changed, 21 insertions(+), 18 deletions(-) create mode 100644 scripts/codegen/__init__.py rename scripts/{j6libc.py => codegen/int_types.py} (75%) diff --git a/scripts/codegen/__init__.py b/scripts/codegen/__init__.py new file mode 100644 index 0000000..820392b --- /dev/null +++ b/scripts/codegen/__init__.py @@ -0,0 +1,16 @@ +import cog + +supported_architectures = { + "amd64": "__amd64__", +} + +def arch_includes(header, root=""): + prefix = "if" + for arch, define in supported_architectures.items(): + cog.outl(f"#{prefix} defined({define})") + cog.outl(f"#include <{root}arch/{arch}/{header}>") + prefix = "elif" + cog.outl("#else") + cog.outl('#error "Unsupported platform"') + cog.outl("#endif") + diff --git a/scripts/j6libc.py b/scripts/codegen/int_types.py similarity index 75% rename from scripts/j6libc.py rename to scripts/codegen/int_types.py index 5c1933d..68716a7 100644 --- a/scripts/j6libc.py +++ b/scripts/codegen/int_types.py @@ -1,18 +1,5 @@ import cog -supported_architectures = { - "amd64": "__amd64__", -} - -def arch_includes(header): - prefix = "if" - for arch, define in supported_architectures.items(): - cog.outl(f"#{prefix} defined({define})") - cog.outl(f"#include <__j6libc/arch/{arch}/{header}>") - prefix = "elif" - cog.outl("#endif") - - int_widths = (8, 16, 32, 64) int_mods = ("fast", "least") diff --git a/src/libraries/libc/include/errno.h.cog b/src/libraries/libc/include/errno.h.cog index 55260ab..177f42c 100644 --- a/src/libraries/libc/include/errno.h.cog +++ b/src/libraries/libc/include/errno.h.cog @@ -12,9 +12,9 @@ /**[[[cog code generation -from j6libc import arch_includes +from codegen import arch_includes -arch_includes("errno.h") +arch_includes("errno.h", root="__j6libc") ]]]*/ /*[[[end]]]*/ diff --git a/src/libraries/libc/include/inttypes.h.cog b/src/libraries/libc/include/inttypes.h.cog index d6864f1..e65193e 100644 --- a/src/libraries/libc/include/inttypes.h.cog +++ b/src/libraries/libc/include/inttypes.h.cog @@ -12,7 +12,7 @@ /**[[[cog code generation import cog -from j6libc import definition, int_widths, int_mods +from codegen.int_types import definition, int_widths, int_mods for width in int_widths: definition("#define", f"PRId{width}", f"__INT{width}_FMTd__") diff --git a/src/libraries/libc/include/stdatomic.h.cog b/src/libraries/libc/include/stdatomic.h.cog index 197e97e..f6c2490 100644 --- a/src/libraries/libc/include/stdatomic.h.cog +++ b/src/libraries/libc/include/stdatomic.h.cog @@ -18,7 +18,7 @@ extern "C" { #endif /**[[[cog code generation -from j6libc import atomic_types +from codegen.int_types import atomic_types deftypes = ["BOOL", "CHAR16", "CHAR32", "CHAR", "INT", "LLONG", "SHORT", "WCHAR_T", "POINTER"] diff --git a/src/libraries/libc_free/include/stdint.h.cog b/src/libraries/libc_free/include/stdint.h.cog index 3dfae0c..9575cbd 100644 --- a/src/libraries/libc_free/include/stdint.h.cog +++ b/src/libraries/libc_free/include/stdint.h.cog @@ -12,7 +12,7 @@ /**[[[cog code generation import cog -from j6libc import definition, int_widths, int_mods +from codegen.int_types import definition, int_widths, int_mods for width in int_widths: definition("typedef", f"__INT{width}_TYPE__", f"int{width}_t;")