42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			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.
 |