MWCC/UMain.c

111 lines
2.9 KiB
C
Raw Normal View History

2022-10-07 19:02:27 +00:00
#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);
}