0,0 → 1,118 |
var fso=new ActiveXObject("Scripting.FileSystemObject"); |
var wsh=WScript.CreateObject("WScript.Shell"); |
var curpath="."; |
var gccpath="c:\\program files\\MinGW\\MinGW\\bin\\"; |
//var gccpath="cmd.exe /c "; |
var gccexe="\""+gccpath+"cc1.exe"+"\" "; |
var asexe="\""+gccpath+"as.exe"+"\" "; |
var objcopyexe="\""+gccpath+"objcopy.exe"+"\" "; |
//var gccexe=gccpath+"cc1.exe" ; |
//var asexe=gccpath+"as.exe"; |
var scriptline="CREATE melibc.a\r\n"; |
|
curpath=".\\string\\"; |
compileasm("memmove"); |
compileasm("memset"); |
curpath=".\\mesys\\"; |
compileasm("backgr"); |
compileasm("button"); |
compileasm("clock"); |
compileasm("date"); |
compileasm("debug_board"); |
compileasm("delay"); |
compileasm("dga"); |
compileasm("draw_bar"); |
compileasm("draw_image"); |
compileasm("draw_window"); |
compileasm("event"); |
compileasm("exit"); |
compileasm("file_58"); |
compileasm("ipc"); |
compileasm("irq"); |
compileasm("keyboard"); |
compileasm("line"); |
compileasm("midi"); |
compileasm("pci"); |
compileasm("pixel"); |
compileasm("process"); |
compileasm("screen"); |
compileasm("sound"); |
compileasm("thread"); |
compileasm("window_redraw"); |
compileasm("write_text"); |
curpath=".\\mem\\"; |
compileasm("memalloc"); |
curpath=".\\mesys\\"; |
compilec("debug_board_"); |
curpath=".\\string\\"; |
compilec("memchr"); |
compilec("memcmp"); |
compilec("strcat"); |
compilec("strchr"); |
compilec("strcmp"); |
compilec("strcoll"); |
compilec("strcpy"); |
compilec("strcspn"); |
compilec("strdup"); |
compilec("strerror"); |
compilec("strlen"); |
compilec("strnbrk"); |
compilec("strncat"); |
compilec("strncmp"); |
compilec("strncpy"); |
compilec("strrchr"); |
compilec("strspn"); |
compilec("strstr"); |
compilec("strtok"); |
compilec("strxfrm"); |
curpath=".\\file\\"; |
compilec("fclose"); |
compilec("fopen"); |
compilec("feof"); |
compilec("fflush"); |
compilec("fgetc"); |
compilec("fgetpos"); |
compilec("fsetpos"); |
compilec("fputc"); |
compilec("fread"); |
compilec("fwrite"); |
compilec("fseek"); |
compilec("ftell"); |
compilec("rewind"); |
compilec("fprintf"); |
compilec("fscanf"); |
compilec("ungetc"); |
curpath=".\\start\\"; |
compileasm("start"); |
//linking |
scriptline+="SAVE\r\n"; |
linko(); |
function compileasm(filename) |
{ |
wsh.Run("fasm.exe "+quote(curpath+filename+".asm")+ |
" "+quote(curpath+filename+".o"),0,true); |
addo(filename); |
} |
function compilec(filename) |
{ |
wsh.Run(gccexe+"-nostdinc -I .\\include -DGNUC " + quote(curpath + filename + ".c")+ |
" -o " + quote(curpath + filename + ".s"),0,true); |
wsh.Run(asexe+quote(curpath+filename+".s")+" -o "+quote(curpath+filename+".o"),0,true); |
wsh.Run(objcopyexe+" -O elf32-i386 --remove-leading-char "+quote(curpath+filename+".o"),0,true); |
addo(filename); |
} |
function addo(filename) |
{ |
scriptline+="ADDMOD "+curpath+filename+".o\r\n"; |
} |
function linko() |
{ |
//fso.DeleteFile(".\\melibc.a"); |
var file=fso.OpenTextFile("./script.txt",2,true); |
file.Write(scriptline); |
wsh.Run("cmd.exe /c ar.exe -M < ./script.txt",4,true); |
} |
function quote(name) |
{ |
return "\""+name+"\""; |
} |