LNXSDK/lib/aura/Backends/readme.md
2025-01-22 16:18:30 +01:00

42 lines
1.7 KiB
Markdown

# Aura Backends
The `/Backends` directory contains target-specific code that may be used on some
targets to improve performance.
The backends are enabled by default, but if you want to only use the generic
Haxe sources (for performance comparisons e.g.), compile your Kha project with
the command line flag `--aura-no-backend`.
## Folder Structure
- `/common_c`:
Pure C code that can be used by multiple backends.
- `/hl`:
Sources/headers for the Hashlink/C backend. The header files are mostly
Hashlink API wrappers around the code in `/common_c`.
Most of the backend sources mirror the respective Haxe code, so please don't
expect much documentation for the individual functions.
The Haxe implementation/glue code for the backends is in Aura's source files in
`/Sources`. There are no Haxe files in the `/backend` folder that shadow
original sources to reduce redundancy and ensure completeness of the API.
Instead, there is usually a static class per backend implementation at the
bottom of a Haxe source module, whose methods are then called and inlined from
the original class if the [backend specific define is set](#defines). This way
all the Haxe functionality for a module stays inside a module and is not
distributed in many per-backend Haxe files, which also keeps the API consistent
for each target.
## Defines
If the backends are enabled, Aura sets some defines before compilation which are
based on the Haxe target to which the project is compiled. They should only be
used internally, but for the sake of completeness they are documented here:
- `AURA_NO_BACKEND`: Defined if backends are disabled.
- `AURA_BACKEND_HL`: Defined if backends are enabled and the project is compiled
to a Hashlink target.