diff options
-rwxr-xr-x | build.bat | 83 | ||||
-rwxr-xr-x | rod/noprefix2.nim | 15 | ||||
-rwxr-xr-x | rod/tccgen.nim | 73 | ||||
-rwxr-xr-x | tools/buildbat.tmpl | 19 |
4 files changed, 190 insertions, 0 deletions
diff --git a/build.bat b/build.bat new file mode 100755 index 000000000..ed88ee9af --- /dev/null +++ b/build.bat @@ -0,0 +1,83 @@ +@echo on +REM Generated by niminst +SET CC=gcc +SET LINKER=gcc +SET COMP_FLAGS=-w -O3 -fno-strict-aliasing +SET LINK_FLAGS= + +REM call the compiler: + +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/system.c -o build/1_1/system.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/winlean.c -o build/1_1/winlean.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/times.c -o build/1_1/times.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/lists.c -o build/1_1/lists.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/nhashes.c -o build/1_1/nhashes.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/nstrtabs.c -o build/1_1/nstrtabs.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/options.c -o build/1_1/options.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/msgs.c -o build/1_1/msgs.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/nversion.c -o build/1_1/nversion.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/crc.c -o build/1_1/crc.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/platform.c -o build/1_1/platform.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/ropes.c -o build/1_1/ropes.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/idents.c -o build/1_1/idents.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/ast.c -o build/1_1/ast.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/astalgo.c -o build/1_1/astalgo.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/condsyms.c -o build/1_1/condsyms.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/hashes.c -o build/1_1/hashes.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/strtabs.c -o build/1_1/strtabs.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/streams.c -o build/1_1/streams.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/osproc.c -o build/1_1/osproc.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/extccomp.c -o build/1_1/extccomp.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/wordrecg.c -o build/1_1/wordrecg.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/commands.c -o build/1_1/commands.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/llstream.c -o build/1_1/llstream.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/lexbase.c -o build/1_1/lexbase.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/scanner.c -o build/1_1/scanner.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/nimconf.c -o build/1_1/nimconf.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/pnimsyn.c -o build/1_1/pnimsyn.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/pbraces.c -o build/1_1/pbraces.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/rnimsyn.c -o build/1_1/rnimsyn.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/filters.c -o build/1_1/filters.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/ptmplsyn.c -o build/1_1/ptmplsyn.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/syntaxes.c -o build/1_1/syntaxes.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/rodread.c -o build/1_1/rodread.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/trees.c -o build/1_1/trees.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/types.c -o build/1_1/types.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/math.c -o build/1_1/math.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/magicsys.c -o build/1_1/magicsys.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/bitsets.c -o build/1_1/bitsets.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/nimsets.c -o build/1_1/nimsets.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/passes.c -o build/1_1/passes.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/treetab.c -o build/1_1/treetab.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/semdata.c -o build/1_1/semdata.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/lookups.c -o build/1_1/lookups.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/importer.c -o build/1_1/importer.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/rodwrite.c -o build/1_1/rodwrite.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/semfold.c -o build/1_1/semfold.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/evals.c -o build/1_1/evals.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/procfind.c -o build/1_1/procfind.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/pragmas.c -o build/1_1/pragmas.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/sem.c -o build/1_1/sem.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/rst.c -o build/1_1/rst.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/highlite.c -o build/1_1/highlite.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/docgen.c -o build/1_1/docgen.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/ccgutils.c -o build/1_1/ccgutils.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/cgmeth.c -o build/1_1/cgmeth.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/cgen.c -o build/1_1/cgen.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/ecmasgen.c -o build/1_1/ecmasgen.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/interact.c -o build/1_1/interact.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/passaux.c -o build/1_1/passaux.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/depends.c -o build/1_1/depends.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/transf.c -o build/1_1/transf.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/main.c -o build/1_1/main.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/parseopt.c -o build/1_1/parseopt.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/nim__dat.c -o build/1_1/nim__dat.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/parseutils.c -o build/1_1/parseutils.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/strutils.c -o build/1_1/strutils.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/os.c -o build/1_1/os.o +%CC% %COMP_FLAGS% -Ibuild -c build/1_1/nimrod.c -o build/1_1/nimrod.o + +%LINKER% %LINK_FLAGS% -o bin\nimrod.exe build/1_1/system.o build/1_1/winlean.o build/1_1/times.o build/1_1/lists.o build/1_1/nhashes.o build/1_1/nstrtabs.o build/1_1/options.o build/1_1/msgs.o build/1_1/nversion.o build/1_1/crc.o build/1_1/platform.o build/1_1/ropes.o build/1_1/idents.o build/1_1/ast.o build/1_1/astalgo.o build/1_1/condsyms.o build/1_1/hashes.o build/1_1/strtabs.o build/1_1/streams.o build/1_1/osproc.o build/1_1/extccomp.o build/1_1/wordrecg.o build/1_1/commands.o build/1_1/llstream.o build/1_1/lexbase.o build/1_1/scanner.o build/1_1/nimconf.o build/1_1/pnimsyn.o build/1_1/pbraces.o build/1_1/rnimsyn.o build/1_1/filters.o build/1_1/ptmplsyn.o build/1_1/syntaxes.o build/1_1/rodread.o build/1_1/trees.o build/1_1/types.o build/1_1/math.o build/1_1/magicsys.o build/1_1/bitsets.o build/1_1/nimsets.o build/1_1/passes.o build/1_1/treetab.o build/1_1/semdata.o build/1_1/lookups.o build/1_1/importer.o build/1_1/rodwrite.o build/1_1/semfold.o build/1_1/evals.o build/1_1/procfind.o build/1_1/pragmas.o build/1_1/sem.o build/1_1/rst.o build/1_1/highlite.o build/1_1/docgen.o build/1_1/ccgutils.o build/1_1/cgmeth.o build/1_1/cgen.o build/1_1/ecmasgen.o build/1_1/interact.o build/1_1/passaux.o build/1_1/depends.o build/1_1/transf.o build/1_1/main.o build/1_1/parseopt.o build/1_1/nim__dat.o build/1_1/parseutils.o build/1_1/strutils.o build/1_1/os.o build/1_1/nimrod.o + +ECHO SUCCESS + 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, "") + diff --git a/tools/buildbat.tmpl b/tools/buildbat.tmpl new file mode 100755 index 000000000..2bb0766a2 --- /dev/null +++ b/tools/buildbat.tmpl @@ -0,0 +1,19 @@ +#! stdtmpl(subsChar='?') | standard +#proc GenerateBuildBatchScript(c: TConfigData): string = +# result = "@echo on\nREM Generated by niminst\n" +SET CC=gcc +SET LINKER=gcc +SET COMP_FLAGS=-w -O3 -fno-strict-aliasing +SET LINK_FLAGS= + +REM call the compiler: + +# var linkCmd = "" +# for f in items(c.cfiles[1][1]): +%CC% %COMP_FLAGS% -Ibuild -c ?{f} -o ?{changeFileExt(f, "o")} +# linkCmd.add(" " & changeFileExt(f, "o")) +# end for + +%LINKER% %LINK_FLAGS% -o ?{c.binPaths[0]}\?{toLower(c.name)}.exe ?linkCmd + +ECHO SUCCESS |