summaryrefslogtreecommitdiff
path: root/UCLTMain.c
diff options
context:
space:
mode:
authorAsh Wolf <ninji@wuffs.org>2022-10-13 17:56:43 +0100
committerAsh Wolf <ninji@wuffs.org>2022-10-13 17:56:43 +0100
commitb8df05413a4e8b299de07b915cddce73a3bb16e3 (patch)
tree74260aa4137676a7dc40fab0d07526d39a1de688 /UCLTMain.c
parent59a724bd4cc7a543686c633572510e6763b34d39 (diff)
downloadMWCC-b8df05413a4e8b299de07b915cddce73a3bb16e3.tar.gz
MWCC-b8df05413a4e8b299de07b915cddce73a3bb16e3.zip
finish CLMain.c
Diffstat (limited to '')
-rw-r--r--UCLTMain.c390
1 files changed, 0 insertions, 390 deletions
diff --git a/UCLTMain.c b/UCLTMain.c
deleted file mode 100644
index 22359dc..0000000
--- a/UCLTMain.c
+++ /dev/null
@@ -1,390 +0,0 @@
-#include "UCWInterface.h"
-
-static short CLT_dummymain(void *context) {
- return 0;
-}
-
-static short CLT_GetDropInFlags(const DropInFlags **flags, long *flagsSize) {
- static const DropInFlags sFlags = {
- kCurrentDropInFlagsVersion,
- CWFOURCHAR('c','l','d','r'),
- 7,
- 0,
- 0,
- 12
- };
- *flags = &sFlags;
- *flagsSize = sizeof(sFlags);
- return 0;
-}
-
-static short CLT_GetDropInName(const char **dropinName) {
- static const char *sDropInName = "Command-Line Driver";
- *dropinName = sDropInName;
- return 0;
-}
-
-static short CLT_GetDisplayName(const char **displayName) {
- static const char *sDisplayName = "Command-Line Driver";
- *displayName = sDisplayName;
- return 0;
-}
-
-static short CLT_GetPanelList(const CWPanelList **panelList) {
- static const char *sPanelNames[4];
- static CWPanelList sPanelList = {
- kCurrentCWPanelListVersion,
- 4,
- sPanelNames
- };
-
- sPanelNames[0] = "CmdLine Panel";
- if (clState.plugintype == CWDROPINCOMPILERTYPE) {
- sPanelNames[1] = "CmdLine Compiler Panel";
- sPanelNames[2] = "CmdLine Linker Panel";
- sPanelList.count = 3;
- } else {
- sPanelNames[1] = "CmdLine Linker Panel";
- sPanelList.count = 2;
- }
- *panelList = &sPanelList;
- return 0;
-}
-
-static short CLT_GetTargetList(const CWTargetList **targetList) {
- static CWDataType sCPU = CWFOURCHAR('*','*','*','*');
- static CWDataType sOS = CWFOURCHAR('*','*','*','*');
- static CWTargetList sTargetList = {
- kCurrentCWTargetListVersion,
- 1,
- &sCPU,
- 1,
- &sOS
- };
- *targetList = &sTargetList;
- return 0;
-}
-
-static short CLT_GetVersionInfo(const VersionInfo **versioninfo) {
- static const VersionInfo vi = {
- 3, 0, 0, 0
- };
- *versioninfo = &vi;
- return 0;
-}
-
-static short CLT_GetFileTypeMappings(const OSFileTypeMappingList **mappinglist) {
- static const OSFileTypeMapping ftmes[2] = {
- {CWFOURCHAR('B','r','w','s'), "DubL", 4, 0, 0},
- {CWFOURCHAR('M','M','P','r'), "looc", 4, 0, 0}
- };
- static const OSFileTypeMappingList ftml = {
- 2,
- ftmes
- };
- *mappinglist = &ftml;
- return 0;
-}
-
-static BasePluginCallbacks clcb = {
- CLT_dummymain,
- CLT_GetDropInFlags,
- CLT_GetDisplayName,
- CLT_GetDropInName,
- CLT_GetPanelList,
- 0,
- 0,
- CLT_GetVersionInfo,
- CLT_GetFileTypeMappings
-};
-
-static int RegisterStaticCmdLinePlugin() {
- return RegisterStaticPlugin(&clcb);
-}
-
-// TODO do me later - this comes from CmdLine/Project/Resources/CLErrors.r
-const char *STR12000[100];
-
-static int RegisterCmdLineResources() {
- return RegisterResource("Command-line strings", 12000, &STR12000);
-}
-
-static int special_debug(unsigned char pre, char *) {
- if (pre) {
- SetupDebuggingTraps();
- return 1;
- } else {
- return 0;
- }
-}
-
-static int special_plugin_debug(unsigned char pre, char *) {
- if (pre) {
- clState.pluginDebug = 1;
- return 1;
- } else {
- return clState.pluginDebug;
- }
-}
-
-static int special_stdout_base(unsigned char pre, char *) {
- if (pre) {
- return 1;
- } else {
- return clState.stdoutBase != 0;
- }
-}
-
-struct SpecialOption {
- const char *optname;
- char **argp;
- int (*func)(unsigned char a, char *b);
-};
-static struct SpecialOption special_options[3] = {
- {"", 0, special_debug},
- {"--plugin-debug", 0, special_plugin_debug},
- {"--stdout", /*TODO clState*/ 0, special_stdout_base}
-};
-
-void Main_PreParse(int *pArgc, char ***pArgv) {
- struct SpecialOption *so;
- int idx;
-
- if (*pArgc > 1) {
- restart:
- for (idx = 0, so = &special_options[0]; idx < 3; idx++, so++) {
- if (!strcmp(so->optname, (*pArgv)[1])) {
- if (so->argp) {
- *so->argp = (*pArgv)[2];
- so->func(1, *so->argp);
- (*pArgv)[1] = (*pArgv)[0];
- (*pArgc)--;
- (*pArgv)++;
-
- (*pArgv)[1] = (*pArgv)[0];
- (*pArgc)--;
- (*pArgv)++;
- } else {
- so->func(1, 0);
- (*pArgv)[1] = (*pArgv)[0];
- (*pArgc)--;
- (*pArgv)++;
- }
- break;
- }
- }
-
- if ((*pArgc) > 1 && idx < 3)
- goto restart;
- }
-}
-
-void Main_PassSpecialArgs(void *unk1, void *unk2) {
- struct SpecialOption *so;
- int idx;
-
- for (idx = 0; idx < 3; idx++) {
- so = &special_options[idx];
- if (so->func(0, 0)) {
- AppendArgumentList(unk1, unk2, so->optname);
- if (so->argp)
- AppendArgumentList(unk1, unk2, (*so->argp) ? *so->argp : "");
- }
- }
-}
-
-static int MainInitialized;
-void *gProj;
-PCmdLine optsCmdLine;
-PCmdLineEnvir optsEnvir;
-PCmdLineCompiler optsCompiler;
-PCmdLineLinker optsLinker;
-
-int Main_Initialize(int argc, const char **argv) {
- static char secret[8];
- char exename[256];
-
- OS_InitProgram(&argc, &argv);
- memset(&clState, 0, sizeof(CLState));
- special_options[0].optname = secret;
- secret[7] = 0;
- secret[4] = 'b';
- secret[1] = '-';
- secret[5] = 'u';
- secret[2] = 'd';
- secret[0] = '-';
- secret[3] = 'e';
- secret[6] = 'g';
-
- Main_PreParse(&argc, &argv);
- clState.argc = argc;
- clState.argv = argv;
- // TODO more shite
-
- MainInitialized = 1;
- return 0;
-}
-
-int Main_Terminate(int exitcode) {
- if (MainInitialized) {
- Plugins_Term();
- License_Terminate();
- Proj_Terminate(gProj);
- IO_Terminate();
- MainInitialized = 0;
- }
- return exitcode;
-}
-
-static int Main_ParseCommandLine() {
- // TODO: clState, Plugins, gTarg, ...
- long vislang;
- int x, y;
- CWCommandLineArgs myargs;
-}
-
-static int Main_SetupParamBlock() {
- // TODO: OS, PrefPanes, clState, ...
- PrefPanelsChangedCallback(0);
-}
-
-static int Main_ResolveProject() {
- // TODO: Various project things
- int err;
- long startTime, endTime;
-}
-
-static int UpdatePCmdLineFromVersion(const PCmdLine *given, PCmdLine *target) {
- static unsigned char warned;
- short version = given->version;
- *target = *given;
-
- // TODO: clState
- return 0;
-}
-
-static int UpdatePCmdLineEnvirFromVersion(const PCmdLineEnvir *given, PCmdLineEnvir *target) {
- static unsigned char warned;
- short version = given->version;
- *target = *given;
-
- // TODO: clState
- return 0;
-}
-
-static int UpdatePCmdLineCompilerFromVersion(const PCmdLineCompiler *given, PCmdLineCompiler *target) {
- static unsigned char warned;
- short version = given->version;
- *target = *given;
-
- // TODO: clState
- return 0;
-}
-
-static int UpdatePCmdLineLinkerFromVersion(const PCmdLineLinker *given, PCmdLineLinker *target) {
- static unsigned char warned;
- short version = given->version;
- *target = *given;
-
- // TODO: clState
- return 0;
-}
-
-static int UpdatePrefPanels(const char *name) {
- PrefPanel *panel;
- Handle h;
-
- if (!name || !ustrcmp(name, "CmdLine Panel")) {
- if ((panel = Prefs_FindPanel("CmdLine Panel")) && (h = PrefPanel_GetHandle(panel))) {
- if (name) {
- if (!UpdatePCmdLineFromVersion((PCmdLine *) *h, &optsCmdLine))
- return 0;
- }
- } else {
- CLReportError(91, "CmdLine Panel");
- return 0;
- }
- }
-
- if (!name || !ustrcmp(name, "CmdLine Environment")) {
- if ((panel = Prefs_FindPanel("CmdLine Environment")) && (h = PrefPanel_GetHandle(panel))) {
- if (name) {
- if (!UpdatePCmdLineEnvirFromVersion((PCmdLineEnvir *) *h, &optsEnvir))
- return 0;
- }
- } else {
- CLReportError(91, "CmdLine Environment");
- return 0;
- }
- }
-
- if (!name || !ustrcmp(name, "CmdLine Compiler Panel")) {
- if ((panel = Prefs_FindPanel("CmdLine Compiler Panel")) && (h = PrefPanel_GetHandle(panel))) {
- if (name) {
- if (!UpdatePCmdLineCompilerFromVersion((PCmdLineCompiler *) *h, &optsCompiler))
- return 0;
- }
- } else {
- CLReportError(91, "CmdLine Compiler Panel");
- return 0;
- }
- }
-
- if (!name || !ustrcmp(name, "CmdLine Linker Panel")) {
- if ((panel = Prefs_FindPanel("CmdLine Linker Panel")) && (h = PrefPanel_GetHandle(panel))) {
- if (name) {
- if (!UpdatePCmdLineLinkerFromVersion((PCmdLineLinker *) *h, &optsLinker))
- return 0;
- }
- } else {
- CLReportError(91, "CmdLine Linker Panel");
- return 0;
- }
- }
-
- return 1;
-}
-
-static int SetupCmdLinePrefPanels() {
- int ret;
-
- PrefPanelsChangedCallback = UpdatePrefPanels;
- ret = Prefs_AddPanel(
- PrefPanel_New("CmdLine Environment", &optsEnvir, sizeof(PCmdLineEnvir))
- );
- ret |= (
- Prefs_AddPanel(PrefPanel_New("CmdLine Panel", 0, sizeof(PCmdLine)))
- && Prefs_AddPanel(PrefPanel_New("CmdLine Compiler Panel", 0, sizeof(PCmdLineCompiler)))
- && Prefs_AddPanel(PrefPanel_New("CmdLine Linker Panel", 0, sizeof(PCmdLineLinker)))
- );
-
- return ret;
-}
-
-static int Main_SetupContext() {
- // TODO Target, Plugins, clState
- return 1;
-}
-
-jmp_buf exit_program;
-
-int Main_Driver() {
- volatile int result;
-
- result = setjmp(exit_program);
- if (!result) {
- if (!SetupCmdLinePrefPanels())
- CLFatalError("Could not initialize preferences");
-
- Main_SetupContext();
- if (!(result = Main_ParseCommandLine())) {
- if (!(result = Main_SetupParamBlock()))
- result = Main_ResolveProject();
- }
- } else {
- result = 1;
- }
-
- return result;
-}
-