mirror of https://git.wuffs.org/MWCC
111 lines
2.9 KiB
C
111 lines
2.9 KiB
C
#include "UCWInterface.h"
|
|
|
|
// 1C40 to 2008
|
|
|
|
// TODO move me
|
|
// TODO move me
|
|
|
|
// unsure where this is, may be here, maybe not?
|
|
extern char cmdline_build_date[32];
|
|
extern char cmdline_build_time[32];
|
|
|
|
int main(int argc, const char **argv) {
|
|
unsigned long cpu;
|
|
unsigned long os;
|
|
unsigned long language;
|
|
unsigned long plugintype;
|
|
unsigned long style;
|
|
int result;
|
|
|
|
if (CmdLine_Initialize(argc, argv, CMDLINE_BUILD_DATE, CMDLINE_BUILD_TIME))
|
|
exit(1);
|
|
|
|
if (!RegisterStaticParserResources() || !RegisterStaticTargetResources()) {
|
|
fprintf(stderr, "\nFATAL ERROR: Could not initialize resource strings\n");
|
|
exit(1);
|
|
}
|
|
|
|
if (!RegisterStaticParserPlugins() || !RegisterStaticTargetPlugins()) {
|
|
fprintf(stderr, "\nFATAL ERROR: Could not initialize built-in plugins\n");
|
|
exit(1);
|
|
}
|
|
|
|
if (!RegisterStaticParserToolInfo()) {
|
|
fprintf(stderr, "\nFATAL ERROR: Could not initialize options\n");
|
|
exit(1);
|
|
}
|
|
|
|
GetStaticTarget(&cpu, &os);
|
|
SetBuildTarget(cpu, os);
|
|
GetStaticPluginType(&language, &plugintype);
|
|
SetPluginType(language, plugintype);
|
|
GetStaticParserPluginType(&style);
|
|
SetParserType(style);
|
|
|
|
result = CmdLine_Driver();
|
|
if (result) {
|
|
if (result == 2)
|
|
fprintf(stderr, "\nUser break, cancelled...\n");
|
|
else
|
|
fprintf(stderr, "\nErrors caused tool to abort.\n");
|
|
}
|
|
CmdLine_Terminate(result);
|
|
return result;
|
|
}
|
|
|
|
int RegisterResource(const char *name, short index, void *data) {
|
|
Handle r;
|
|
|
|
if (data == 0) {
|
|
r = GetResource('STR#', index);
|
|
if (r == 0) {
|
|
CLFatalError("Resource ('STR#',%d) '%s' not found in executable\n", index, name);
|
|
return 0;
|
|
}
|
|
ReleaseResource(r);
|
|
return 1;
|
|
} else {
|
|
return Res_AddResource(name, index, data);
|
|
}
|
|
}
|
|
|
|
int RegisterStaticPlugin(const BasePluginCallbacks *cb) {
|
|
return Plugins_Add(Plugin_New(cb, 0, 0));
|
|
}
|
|
|
|
int RegisterStaticCompilerLinkerPlugin(const BasePluginCallbacks *cb, void *b) {
|
|
return Plugins_Add(Plugin_New(cb, b, 0));
|
|
}
|
|
|
|
int RegisterStaticParserPlugin(const BasePluginCallbacks *cb, void *b) {
|
|
return Plugins_Add(Plugin_New(cb, 0, b));
|
|
}
|
|
|
|
void SetBuildTarget(CWDataType cpu, CWDataType os) {
|
|
clState.cpu = cpu;
|
|
clState.os = os;
|
|
}
|
|
|
|
void SetParserType(CWDataType style) {
|
|
clState.style = style;
|
|
}
|
|
|
|
void SetPluginType(CWDataType language, CWDataType plugintype) {
|
|
clState.language = language;
|
|
clState.plugintype = plugintype;
|
|
}
|
|
|
|
int CmdLine_Initialize(int argc, const char **argv, const char *buildDate, const char *buildTime) {
|
|
strncpy(cmdline_build_date, buildDate, sizeof(cmdline_build_date));
|
|
strncpy(cmdline_build_time, buildTime, sizeof(cmdline_build_time));
|
|
return Main_Initialize(argc, argv);
|
|
}
|
|
|
|
int CmdLine_Driver() {
|
|
return Main_Driver();
|
|
}
|
|
|
|
int CmdLine_Terminate(int code) {
|
|
return Main_Terminate(code);
|
|
}
|