mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 05:12:26 +00:00
Update C bootstrap source.
This commit is contained in:
parent
3ba0d7ae2c
commit
ee197d741a
185 changed files with 390 additions and 350 deletions
|
|
@ -1,4 +1,4 @@
|
|||
/* voc 2.00 [2016/12/20]. Bootstrapping compiler for address size 8, alignment 8. xtspaSF */
|
||||
/* voc 2.1.0 [2016/12/21]. Bootstrapping compiler for address size 8, alignment 8. xtspaSF */
|
||||
|
||||
#define SHORTINT INT8
|
||||
#define INTEGER INT16
|
||||
|
|
@ -7,14 +7,18 @@
|
|||
|
||||
#include "SYSTEM.h"
|
||||
#include "Configuration.h"
|
||||
#include "Heap.h"
|
||||
#include "Modules.h"
|
||||
#include "OPM.h"
|
||||
#include "Out.h"
|
||||
#include "Platform.h"
|
||||
#include "Strings.h"
|
||||
|
||||
typedef
|
||||
CHAR extTools_CommandString[4096];
|
||||
|
||||
static CHAR extTools_CFLAGS[1023];
|
||||
|
||||
static extTools_CommandString extTools_CFLAGS;
|
||||
|
||||
|
||||
export void extTools_Assemble (CHAR *moduleName, ADDRESS moduleName__len);
|
||||
|
|
@ -26,14 +30,17 @@ static void extTools_execute (CHAR *title, ADDRESS title__len, CHAR *cmd, ADDRES
|
|||
static void extTools_execute (CHAR *title, ADDRESS title__len, CHAR *cmd, ADDRESS cmd__len)
|
||||
{
|
||||
INT16 r, status, exitcode;
|
||||
extTools_CommandString fullcmd;
|
||||
__DUP(title, title__len, CHAR);
|
||||
__DUP(cmd, cmd__len, CHAR);
|
||||
if (__IN(18, OPM_Options, 32)) {
|
||||
Out_String(title, title__len);
|
||||
Out_String(cmd, cmd__len);
|
||||
Out_String((CHAR*)" ", 3);
|
||||
Out_String(fullcmd, 4096);
|
||||
Out_Ln();
|
||||
}
|
||||
r = Platform_System(cmd, cmd__len);
|
||||
__COPY(cmd, fullcmd, 4096);
|
||||
Heap_GC(0);
|
||||
r = Platform_System(fullcmd, 4096);
|
||||
status = __MASK(r, -128);
|
||||
exitcode = __ASHR(r, 8);
|
||||
if (exitcode > 127) {
|
||||
|
|
@ -69,44 +76,44 @@ static void extTools_InitialiseCompilerCommand (CHAR *s, ADDRESS s__len)
|
|||
Strings_Append((CHAR*)" -I \"", 6, (void*)s, s__len);
|
||||
Strings_Append(OPM_ResourceDir, 1024, (void*)s, s__len);
|
||||
Strings_Append((CHAR*)"/include\" ", 11, (void*)s, s__len);
|
||||
Platform_GetEnv((CHAR*)"CFLAGS", 7, (void*)extTools_CFLAGS, 1023);
|
||||
Strings_Append(extTools_CFLAGS, 1023, (void*)s, s__len);
|
||||
Platform_GetEnv((CHAR*)"CFLAGS", 7, (void*)extTools_CFLAGS, 4096);
|
||||
Strings_Append(extTools_CFLAGS, 4096, (void*)s, s__len);
|
||||
Strings_Append((CHAR*)" ", 2, (void*)s, s__len);
|
||||
}
|
||||
|
||||
void extTools_Assemble (CHAR *moduleName, ADDRESS moduleName__len)
|
||||
{
|
||||
CHAR cmd[1023];
|
||||
extTools_CommandString cmd;
|
||||
__DUP(moduleName, moduleName__len, CHAR);
|
||||
extTools_InitialiseCompilerCommand((void*)cmd, 1023);
|
||||
Strings_Append((CHAR*)"-c ", 4, (void*)cmd, 1023);
|
||||
Strings_Append(moduleName, moduleName__len, (void*)cmd, 1023);
|
||||
Strings_Append((CHAR*)".c", 3, (void*)cmd, 1023);
|
||||
extTools_execute((CHAR*)"C compile: ", 12, cmd, 1023);
|
||||
extTools_InitialiseCompilerCommand((void*)cmd, 4096);
|
||||
Strings_Append((CHAR*)"-c ", 4, (void*)cmd, 4096);
|
||||
Strings_Append(moduleName, moduleName__len, (void*)cmd, 4096);
|
||||
Strings_Append((CHAR*)".c", 3, (void*)cmd, 4096);
|
||||
extTools_execute((CHAR*)"C compile: ", 12, cmd, 4096);
|
||||
__DEL(moduleName);
|
||||
}
|
||||
|
||||
void extTools_LinkMain (CHAR *moduleName, ADDRESS moduleName__len, BOOLEAN statically, CHAR *additionalopts, ADDRESS additionalopts__len)
|
||||
{
|
||||
CHAR cmd[1023];
|
||||
extTools_CommandString cmd;
|
||||
__DUP(additionalopts, additionalopts__len, CHAR);
|
||||
extTools_InitialiseCompilerCommand((void*)cmd, 1023);
|
||||
Strings_Append(moduleName, moduleName__len, (void*)cmd, 1023);
|
||||
Strings_Append((CHAR*)".c ", 4, (void*)cmd, 1023);
|
||||
Strings_Append(additionalopts, additionalopts__len, (void*)cmd, 1023);
|
||||
extTools_InitialiseCompilerCommand((void*)cmd, 4096);
|
||||
Strings_Append(moduleName, moduleName__len, (void*)cmd, 4096);
|
||||
Strings_Append((CHAR*)".c ", 4, (void*)cmd, 4096);
|
||||
Strings_Append(additionalopts, additionalopts__len, (void*)cmd, 4096);
|
||||
if (statically) {
|
||||
Strings_Append((CHAR*)" -static", 9, (void*)cmd, 1023);
|
||||
Strings_Append((CHAR*)" -static", 9, (void*)cmd, 4096);
|
||||
}
|
||||
Strings_Append((CHAR*)" -o ", 5, (void*)cmd, 1023);
|
||||
Strings_Append(moduleName, moduleName__len, (void*)cmd, 1023);
|
||||
Strings_Append((CHAR*)" -L\"", 5, (void*)cmd, 1023);
|
||||
Strings_Append(OPM_InstallDir, 1024, (void*)cmd, 1023);
|
||||
Strings_Append((CHAR*)"/lib\"", 6, (void*)cmd, 1023);
|
||||
Strings_Append((CHAR*)" -l voc", 8, (void*)cmd, 1023);
|
||||
Strings_Append((CHAR*)"-O", 3, (void*)cmd, 1023);
|
||||
Strings_Append(OPM_Model, 10, (void*)cmd, 1023);
|
||||
Strings_Append((CHAR*)"", 1, (void*)cmd, 1023);
|
||||
extTools_execute((CHAR*)"C compile and link: ", 21, cmd, 1023);
|
||||
Strings_Append((CHAR*)" -o ", 5, (void*)cmd, 4096);
|
||||
Strings_Append(moduleName, moduleName__len, (void*)cmd, 4096);
|
||||
Strings_Append((CHAR*)" -L\"", 5, (void*)cmd, 4096);
|
||||
Strings_Append(OPM_InstallDir, 1024, (void*)cmd, 4096);
|
||||
Strings_Append((CHAR*)"/lib\"", 6, (void*)cmd, 4096);
|
||||
Strings_Append((CHAR*)" -l voc", 8, (void*)cmd, 4096);
|
||||
Strings_Append((CHAR*)"-O", 3, (void*)cmd, 4096);
|
||||
Strings_Append(OPM_Model, 10, (void*)cmd, 4096);
|
||||
Strings_Append((CHAR*)"", 1, (void*)cmd, 4096);
|
||||
extTools_execute((CHAR*)"C compile and link: ", 21, cmd, 4096);
|
||||
__DEL(additionalopts);
|
||||
}
|
||||
|
||||
|
|
@ -115,6 +122,7 @@ export void *extTools__init(void)
|
|||
{
|
||||
__DEFMOD;
|
||||
__MODULE_IMPORT(Configuration);
|
||||
__MODULE_IMPORT(Heap);
|
||||
__MODULE_IMPORT(Modules);
|
||||
__MODULE_IMPORT(OPM);
|
||||
__MODULE_IMPORT(Out);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue