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