kernel/meta/plugins/headers.py
2025-04-20 01:58:13 +02:00

33 lines
1.1 KiB
Python

import os
from .hooks import hook
from cutekit import const, model, shell
from cutekit.builder import TargetScope
from pathlib import Path
@hook("generate-global-aliases")
def _(scope: TargetScope):
generatedDir = Path(shell.mkdir(os.path.join(const.GENERATED_DIR, "__aliases__")))
for c in scope.registry.iter(model.Component):
if c.type != model.Kind.LIB:
continue
modPath = shell.either(
[
os.path.join(c.dirname(), "_mod.h"),
os.path.join(c.dirname(), "mod.h"),
]
)
aliasPath = generatedDir / c.id
if modPath is None or os.path.exists(aliasPath):
continue
targetPath = f"{c.id}/{os.path.basename(modPath)}"
print(f"Generating alias <{c.id}> -> <{Path(modPath).absolute()}>")
# We can't generate an alias using symlinks because
# because this will break #pragma once in some compilers.
with open(aliasPath, "w") as f:
f.write("#pragma once\n")
f.write(f'#include "{Path(modPath).absolute()}"\n')