30#define POLYPHASE_BUILD_TARGET_API_VERSION 1
35typedef struct PolyphaseBuildTargetDesc PolyphaseBuildTargetDesc;
36typedef struct PolyphaseBuildContext PolyphaseBuildContext;
40#define POLYPHASE_BT_LOG_DEBUG 0
41#define POLYPHASE_BT_LOG_WARNING 1
42#define POLYPHASE_BT_LOG_ERROR 2
50struct PolyphaseBuildContext
52 uint32_t structVersion;
56 const char* projectName;
57 const char* projectDir;
58 const char* packageOutputDir;
59 const char* engineDir;
60 const char* compiledBinaryDir;
67 int32_t runAfterBuild;
79 void* opaqueEngineState;
86 void (*Log)(int32_t severity,
const char* msg);
89 void (*WriteOutputLine)(
const char* line);
95 int32_t (*GetProfileSetting)(
const char* key,
char* outVal,
size_t cap);
98 void (*SetProfileSetting)(
const char* key,
const char* val);
104 int32_t (*ResolvePath)(
const char* relative,
char* outAbs,
size_t cap);
117struct PolyphaseBuildTargetDesc
121 const char* targetId;
122 const char* displayName;
123 const char* iconText;
124 const char* category;
127 int32_t basePlatform;
130 const char* binaryExtension;
133 int32_t requiresDocker;
134 int32_t supportsRunOnDevice;
135 int32_t supportsEmulator;
145 int32_t (*Validate)(
char* outReason,
size_t reasonCap);
152 int32_t (*PreCook)(
const PolyphaseBuildContext* ctx);
167 int32_t (*CookAsset)(
const PolyphaseBuildContext* ctx,
168 const char* assetTypeName,
void* assetPtr,
void* streamPtr);
176 int32_t (*GetCompileCommand)(
const PolyphaseBuildContext* ctx,
char* outCmd,
size_t cmdCap);
185 int32_t (*GetCompiledBinaryPath)(
const PolyphaseBuildContext* ctx,
char* outPath,
size_t pathCap);
192 int32_t (*PostPackage)(
const PolyphaseBuildContext* ctx);
198 int32_t (*RunOnDevice)(
const PolyphaseBuildContext* ctx,
char* outCmd,
size_t cmdCap);
204 int32_t (*RunInEmulator)(
const PolyphaseBuildContext* ctx,
char* outCmd,
size_t cmdCap);
219 void (*DrawProfileOptions)(
const PolyphaseBuildContext* ctx);
222 void (*SerializeProfileOptions)(
const PolyphaseBuildContext* ctx,
void* rapidJsonValuePtr);
225 void (*DeserializeProfileOptions)(
const PolyphaseBuildContext* ctx,
const void* rapidJsonValuePtr);
253 const char* platformExtensionDir;