{ "$schema": "https://json-schema.org/draft/2019-09/schema", "type": "object", "properties": { "name": {"type": "string"}, "type": { "type": "string", "enum": ["aurora", "generic", "root", "lazy_free", "utility", "blank"], "description": "https://pastebin.com/ThE2t9EJ" }, "sources": { "type": ["array", "string"], "items": { "type": "string" }, "description": "add most files matching regex('${path}'). .masm, .inl, and others may not match unless specifically requested because premake do be premake. " }, "sourcePaths": { "type": ["array", "string"], "items": { "type": "string" }, "description": "add files projectDir/${path}/**.[common exts and some]" }, "excludes": { "type": ["array", "string"], "items": { "type": "string" }, "description": "removes files matching regex('${exclude}') " }, "include": { "type": ["array", "string"], "description": "include directory. accessible from all translation units. inc order: internal -> include_next -> public " }, "noLink": { "type": "boolean", "description": "indicates the current project is a header only library and therefore one does not link against a compiled module" }, "dllexport": { "type": ["array", "string"], "items": { "type": "string" }, "description": "adds a preprocessor definition to translation units compling a shared project" }, "dllimport": { "type": ["array", "string"], "items": { "type": "string" }, "description": "adds a preprocessor definition to translation units linking against a shared project" }, "impDefines": { "type": ["array", "string"], "items": { "type": "string" }, "description": "adds a preprocessor definition to translation units compiling the project" }, "impInclude": { "type": ["array", "string"], "description": "appends a relative path to the include paths" }, "defines": { "type": ["array", "string"], "items": { "type": "string" }, "description": "adds preprocessor definition. supports '=value'. availablity extends to dependents" }, "require": { "type": ["array", "string"], "items": { "type": "string" }, "description": "depend on another project. this can be used to fence build stages and integrate other native build+execute utils ahead of project compilation time" }, "soft-depends": { "type": ["array", "string"], "items": { "type": "string" } }, "depends": { "type": ["array", "string"], "items": { "type": "string" }, "description": "link against another library" }, "features": { "type": ["array", "string"], "items": { "type": "string", "enum": ["remove-platform-code", "guess-platform-code"] }, "description": "remove-platform-code -> excludes paths which appear to be tied to common hardware and software architectures (win32,mac,xnu,nt,intel,amiga,x86_64,mips,arm,powerpc,riscv,etc)" }, "actions": { "type": "array", "items": { "type": "object", "properties": { "if": {"type": "string"}, "then": {"type": ["string", "object", "array"] }, "eval": {"type": ["string", "object", "array"]} } } }, "isCwdProjRoot": { "type": "boolean" }, "events": { "type": "array", "items": { "type": "object", "properties": { "when": { "type": "string", "enum": ["pre", "post"] }, "lua": { "type": "string", "description": "executes lua script under Build_UserScripts/%s.lua" }, "bin": { "type": "string", "description": "shell script" } } } } }, "required": ["name", "type"] }