69 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | const fs = require("fs"); | ||
|  | 
 | ||
|  | const optickPathKey = "AURA_OPTICK_PATH"; | ||
|  | 
 | ||
|  | // See https://github.com/Kode/Kha/wiki/Hashlink
 | ||
|  | const targetsHL = ["windows-hl", "linux-hl", "osx-hl", "android-hl", "ios-hl"]; | ||
|  | const targetsCPP = ["windows", "linux", "osx"]; | ||
|  | const targetsHTML5 = ["html5", "debug-html5"]; | ||
|  | 
 | ||
|  | function addBackends(project) { | ||
|  | 	project.localLibraryPath = "Backends"; | ||
|  | 
 | ||
|  | 	const isHL = targetsHL.indexOf(Project.platform) >= 0; | ||
|  | 
 | ||
|  | 	if (isHL) { | ||
|  | 		project.addLibrary("hl"); | ||
|  | 		project.addDefine("AURA_BACKEND_HL"); | ||
|  | 		console.log("[Aura] Using HL/C backend"); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	const isHTML5 = targetsHTML5.indexOf(Project.platform) >= 0; | ||
|  | 	if (isHTML5) { | ||
|  | 		// project.addSources("backends/html5");
 | ||
|  | 	} | ||
|  | 
 | ||
|  | 	project.localLibraryPath = "Libraries"; | ||
|  | } | ||
|  | 
 | ||
|  | async function main() { | ||
|  | 	const project = new Project('aura'); | ||
|  | 
 | ||
|  | 	project.addSources('Sources'); | ||
|  | 
 | ||
|  | 	if (process.argv.indexOf("--aura-no-backend") == -1) { | ||
|  | 		addBackends(project); | ||
|  | 	} | ||
|  | 	else { | ||
|  | 		project.addDefine("AURA_NO_BACKEND"); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	const isCPP = targetsCPP.indexOf(Project.platform) >= 0; | ||
|  | 	if (isCPP && process.argv.indexOf("--aura-no-simd") == -1) { | ||
|  | 		project.addDefine("AURA_SIMD"); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	const withOptick = optickPathKey in process.env && isCPP; | ||
|  | 	if (withOptick) { | ||
|  | 		const optickPath = process.env[optickPathKey]; | ||
|  | 
 | ||
|  | 		if (fs.existsSync(optickPath)) { | ||
|  | 			project.addDefine("AURA_WITH_OPTICK"); | ||
|  | 
 | ||
|  | 			await project.addProject(optickPath); | ||
|  | 
 | ||
|  | 			// Unfortunately there is no metadata to include a specified header
 | ||
|  | 			// in the cpp file that calls a certain _inlined_ Haxe function, so
 | ||
|  | 			// instead we need to add it everywhere for now (bad workaround)...
 | ||
|  | 			project.addParameter("--macro addGlobalMetadata('aura', '@:headerCode(\"#include <optick.h>\")')"); | ||
|  | 		} | ||
|  | 		else { | ||
|  | 			console.warn(`Aura: Path ${optickPath} does not exist, building without Optick support.`); | ||
|  | 		} | ||
|  | 	} | ||
|  | 
 | ||
|  | 	resolve(project); | ||
|  | } | ||
|  | 
 | ||
|  | await main(); |