From 040c57f0a566b257ab7fcca4c6557be4b3c76f24 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Sun, 8 Aug 2010 23:50:06 +0200 Subject: added missing files --- rod/noprefix2.nim | 15 ++++++++++++ rod/tccgen.nim | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100755 rod/noprefix2.nim create mode 100755 rod/tccgen.nim (limited to 'rod') diff --git a/rod/noprefix2.nim b/rod/noprefix2.nim new file mode 100755 index 000000000..6fbdaaddc --- /dev/null +++ b/rod/noprefix2.nim @@ -0,0 +1,15 @@ +# strip those silly GTK/ATK prefixes... + +import + expandimportc, os + +const + filelist = [ + ("gtk/pango", "pango"), + ("gtk/pangoutils", "pango") + ] + +for filename, prefix in items(filelist): + var f = addFileExt(filename, "nim") + main("lib/newwrap" / f, "lib/newwrap" / filename & ".new.nim", prefix) + diff --git a/rod/tccgen.nim b/rod/tccgen.nim new file mode 100755 index 000000000..3e3c311a4 --- /dev/null +++ b/rod/tccgen.nim @@ -0,0 +1,73 @@ +# +# +# The Nimrod Compiler +# (c) Copyright 2010 Andreas Rumpf +# +# See the file "copying.txt", included in this +# distribution, for details about the copyright. +# + +import + os, strutils, options, msgs, tinyc + +{.compile: "../tinyc/libtcc.c".} + +proc tinyCErrorHandler(closure: pointer, msg: cstring) {.cdecl.} = + rawMessage(errGenerated, $msg) + +proc initTinyCState: PccState = + result = openCCState() + setErrorFunc(result, nil, tinyCErrorHandler) + +var + gTinyC = initTinyCState() + libIncluded = false + +proc addFile(filename: string) = + if addFile(gTinyC, filename) != 0'i32: + rawMessage(errCannotOpenFile, filename) + +proc setupEnvironment = + #defineSymbol(gTinyC, "__x86_64__", nil) + #defineSymbol(gTinyC, "__linux__", nil) + #defineSymbol(gTinyC, "__linux", nil) + var nimrodDir = getPrefixDir() + + addIncludePath(gTinyC, libpath) + when defined(windows): + addSysincludePath(gTinyC, nimrodDir / "tinyc/win32/include") + addSysincludePath(gTinyC, nimrodDir / "tinyc/include") + when defined(windows): + defineSymbol(gTinyC, "__i386__", nil) + defineSymbol(gTinyC, "_WIN32", nil) + # we need Mingw's headers too: + var gccbin = getConfigVar("gcc.path") % ["nimrod", nimrodDir] + addSysincludePath(gTinyC, gccbin /../ "include") + #addFile(nimrodDir / r"tinyc\win32\wincrt1.o") + addFile(nimrodDir / r"tinyc\win32\alloca86.o") + addFile(nimrodDir / r"tinyc\win32\chkstk.o") + #addFile(nimrodDir / r"tinyc\win32\crt1.o") + + #addFile(nimrodDir / r"tinyc\win32\dllcrt1.o") + #addFile(nimrodDir / r"tinyc\win32\dllmain.o") + addFile(nimrodDir / r"tinyc\win32\libtcc1.o") + + #addFile(nimrodDir / r"tinyc\win32\lib\crt1.c") + #addFile(nimrodDir / r"tinyc\lib\libtcc1.c") + else: + addSysincludePath(gTinyC, "/usr/include") + +proc compileCCode*(ccode: string) = + if not libIncluded: + libIncluded = true + setupEnvironment() + discard compileString(gTinyC, ccode) + +proc run*() = + var a: array[0..1, cstring] + a[0] = "" + a[1] = "" + var err = tinyc.run(gTinyC, 0'i32, addr(a)) != 0'i32 + closeCCState(gTinyC) + if err: rawMessage(errExecutionOfProgramFailed, "") + -- cgit 1.4.1-2-gfad0