summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rwxr-xr-xbuild.bat83
-rwxr-xr-xrod/noprefix2.nim15
-rwxr-xr-xrod/tccgen.nim73
-rwxr-xr-xtools/buildbat.tmpl19
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