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.
 |