33 lines
1.1 KiB
Python
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')
|