resolved conflicts with master

This commit is contained in:
Araq
2014-01-18 01:16:45 +01:00
22 changed files with 225 additions and 611 deletions

1
.gitignore vendored
View File

@@ -58,6 +58,7 @@ examples/cross_calculator/android/tags
# Generated files.
/compile.json
/compiler/c2nim/c2nim
/compiler/nimrod.dot
/compiler/pas2nim/pas2nim
/compiler/service
/examples/allany

View File

@@ -1,7 +1,7 @@
#
#
# The Nimrod Compiler
# (c) Copyright 2013 Andreas Rumpf
# (c) Copyright 2014 Andreas Rumpf
#
# See the file "copying.txt", included in this
# distribution, for details about the copyright.
@@ -249,10 +249,13 @@ proc processSwitch(switch, arg: string, pass: TCmdLinePass, info: TLineInfo) =
expectArg(switch, arg, pass, info)
addPath(processPath(arg), info)
of "babelpath":
if pass in {passCmd2, passPP}:
if pass in {passCmd2, passPP} and not options.gNoBabelPath:
expectArg(switch, arg, pass, info)
let path = processPath(arg, notRelativeToProj=true)
babelPath(path, info)
babelpath(path, info)
of "nobabelpath":
expectNoArg(switch, arg, pass, info)
options.gNoBabelPath = true
of "excludepath":
expectArg(switch, arg, pass, info)
let path = processPath(arg)

View File

@@ -614,7 +614,7 @@ proc callCCompiler*(projectfile: string) =
exefile = splitFile(projectfile).name & platform.OS[targetOS].exeExt
builddll = ""
if options.outFile.len > 0:
exefile = options.outFile
exefile = options.outFile.expandTilde
if not noAbsolutePaths():
if not exefile.isAbsolute():
exefile = joinPath(splitFile(projectfile).dir, exefile)

View File

@@ -1,591 +0,0 @@
digraph nimrod {
times -> strutils;
os -> strutils;
os -> times;
posix -> times;
os -> posix;
nhashes -> strutils;
nstrtabs -> os;
nstrtabs -> nhashes;
nstrtabs -> strutils;
options -> os;
options -> lists;
options -> strutils;
options -> nstrtabs;
msgs -> options;
msgs -> strutils;
msgs -> os;
crc -> strutils;
platform -> strutils;
ropes -> msgs;
ropes -> strutils;
ropes -> platform;
ropes -> nhashes;
ropes -> crc;
idents -> nhashes;
idents -> strutils;
ast -> msgs;
ast -> nhashes;
ast -> nversion;
ast -> options;
ast -> strutils;
ast -> crc;
ast -> ropes;
ast -> idents;
ast -> lists;
astalgo -> ast;
astalgo -> nhashes;
astalgo -> strutils;
astalgo -> options;
astalgo -> msgs;
astalgo -> ropes;
astalgo -> idents;
condsyms -> ast;
condsyms -> astalgo;
condsyms -> msgs;
condsyms -> nhashes;
condsyms -> platform;
condsyms -> strutils;
condsyms -> idents;
hashes -> strutils;
strtabs -> os;
strtabs -> hashes;
strtabs -> strutils;
osproc -> strutils;
osproc -> os;
osproc -> strtabs;
osproc -> streams;
osproc -> posix;
extccomp -> lists;
extccomp -> ropes;
extccomp -> os;
extccomp -> strutils;
extccomp -> osproc;
extccomp -> platform;
extccomp -> condsyms;
extccomp -> options;
extccomp -> msgs;
wordrecg -> nhashes;
wordrecg -> strutils;
wordrecg -> idents;
commands -> os;
commands -> msgs;
commands -> options;
commands -> nversion;
commands -> condsyms;
commands -> strutils;
commands -> extccomp;
commands -> platform;
commands -> lists;
commands -> wordrecg;
llstream -> strutils;
lexbase -> llstream;
lexbase -> strutils;
scanner -> nhashes;
scanner -> options;
scanner -> msgs;
scanner -> strutils;
scanner -> platform;
scanner -> idents;
scanner -> lexbase;
scanner -> llstream;
scanner -> wordrecg;
nimconf -> llstream;
nimconf -> nversion;
nimconf -> commands;
nimconf -> os;
nimconf -> strutils;
nimconf -> msgs;
nimconf -> platform;
nimconf -> condsyms;
nimconf -> scanner;
nimconf -> options;
nimconf -> idents;
nimconf -> wordrecg;
pnimsyn -> llstream;
pnimsyn -> scanner;
pnimsyn -> idents;
pnimsyn -> strutils;
pnimsyn -> ast;
pnimsyn -> msgs;
pbraces -> llstream;
pbraces -> scanner;
pbraces -> idents;
pbraces -> strutils;
pbraces -> ast;
pbraces -> msgs;
pbraces -> pnimsyn;
rnimsyn -> scanner;
rnimsyn -> options;
rnimsyn -> idents;
rnimsyn -> strutils;
rnimsyn -> ast;
rnimsyn -> msgs;
rnimsyn -> lists;
filters -> llstream;
filters -> os;
filters -> wordrecg;
filters -> idents;
filters -> strutils;
filters -> ast;
filters -> astalgo;
filters -> msgs;
filters -> options;
filters -> rnimsyn;
ptmplsyn -> llstream;
ptmplsyn -> os;
ptmplsyn -> wordrecg;
ptmplsyn -> idents;
ptmplsyn -> strutils;
ptmplsyn -> ast;
ptmplsyn -> astalgo;
ptmplsyn -> msgs;
ptmplsyn -> options;
ptmplsyn -> rnimsyn;
ptmplsyn -> filters;
syntaxes -> strutils;
syntaxes -> llstream;
syntaxes -> ast;
syntaxes -> astalgo;
syntaxes -> idents;
syntaxes -> scanner;
syntaxes -> options;
syntaxes -> msgs;
syntaxes -> pnimsyn;
syntaxes -> pbraces;
syntaxes -> ptmplsyn;
syntaxes -> filters;
syntaxes -> rnimsyn;
paslex -> nhashes;
paslex -> options;
paslex -> msgs;
paslex -> strutils;
paslex -> platform;
paslex -> idents;
paslex -> lexbase;
paslex -> wordrecg;
paslex -> scanner;
pasparse -> os;
pasparse -> llstream;
pasparse -> scanner;
pasparse -> paslex;
pasparse -> idents;
pasparse -> wordrecg;
pasparse -> strutils;
pasparse -> ast;
pasparse -> astalgo;
pasparse -> msgs;
pasparse -> options;
rodread -> os;
rodread -> options;
rodread -> strutils;
rodread -> nversion;
rodread -> ast;
rodread -> astalgo;
rodread -> msgs;
rodread -> platform;
rodread -> condsyms;
rodread -> ropes;
rodread -> idents;
rodread -> crc;
trees -> ast;
trees -> astalgo;
trees -> scanner;
trees -> msgs;
trees -> strutils;
types -> ast;
types -> astalgo;
types -> trees;
types -> msgs;
types -> strutils;
types -> platform;
magicsys -> ast;
magicsys -> astalgo;
magicsys -> nhashes;
magicsys -> msgs;
magicsys -> platform;
magicsys -> nversion;
magicsys -> times;
magicsys -> idents;
magicsys -> rodread;
nimsets -> ast;
nimsets -> astalgo;
nimsets -> trees;
nimsets -> nversion;
nimsets -> msgs;
nimsets -> platform;
nimsets -> bitsets;
nimsets -> types;
nimsets -> rnimsyn;
passes -> strutils;
passes -> lists;
passes -> options;
passes -> ast;
passes -> astalgo;
passes -> llstream;
passes -> msgs;
passes -> platform;
passes -> os;
passes -> condsyms;
passes -> idents;
passes -> rnimsyn;
passes -> types;
passes -> extccomp;
passes -> math;
passes -> magicsys;
passes -> nversion;
passes -> nimsets;
passes -> syntaxes;
passes -> times;
passes -> rodread;
treetab -> nhashes;
treetab -> ast;
treetab -> astalgo;
treetab -> types;
semdata -> strutils;
semdata -> lists;
semdata -> options;
semdata -> scanner;
semdata -> ast;
semdata -> astalgo;
semdata -> trees;
semdata -> treetab;
semdata -> wordrecg;
semdata -> ropes;
semdata -> msgs;
semdata -> platform;
semdata -> os;
semdata -> condsyms;
semdata -> idents;
semdata -> rnimsyn;
semdata -> types;
semdata -> extccomp;
semdata -> math;
semdata -> magicsys;
semdata -> nversion;
semdata -> nimsets;
semdata -> pnimsyn;
semdata -> times;
semdata -> passes;
semdata -> rodread;
lookups -> ast;
lookups -> astalgo;
lookups -> idents;
lookups -> semdata;
lookups -> types;
lookups -> msgs;
lookups -> options;
lookups -> rodread;
lookups -> rnimsyn;
importer -> strutils;
importer -> os;
importer -> ast;
importer -> astalgo;
importer -> msgs;
importer -> options;
importer -> idents;
importer -> rodread;
importer -> lookups;
importer -> semdata;
importer -> passes;
rodwrite -> os;
rodwrite -> options;
rodwrite -> strutils;
rodwrite -> nversion;
rodwrite -> ast;
rodwrite -> astalgo;
rodwrite -> msgs;
rodwrite -> platform;
rodwrite -> condsyms;
rodwrite -> ropes;
rodwrite -> idents;
rodwrite -> crc;
rodwrite -> rodread;
rodwrite -> passes;
rodwrite -> importer;
semfold -> strutils;
semfold -> lists;
semfold -> options;
semfold -> ast;
semfold -> astalgo;
semfold -> trees;
semfold -> treetab;
semfold -> nimsets;
semfold -> times;
semfold -> nversion;
semfold -> platform;
semfold -> math;
semfold -> msgs;
semfold -> os;
semfold -> condsyms;
semfold -> idents;
semfold -> rnimsyn;
semfold -> types;
evals -> strutils;
evals -> magicsys;
evals -> lists;
evals -> options;
evals -> ast;
evals -> astalgo;
evals -> trees;
evals -> treetab;
evals -> nimsets;
evals -> msgs;
evals -> os;
evals -> condsyms;
evals -> idents;
evals -> rnimsyn;
evals -> types;
evals -> passes;
evals -> semfold;
procfind -> ast;
procfind -> astalgo;
procfind -> msgs;
procfind -> semdata;
procfind -> types;
procfind -> trees;
pragmas -> os;
pragmas -> platform;
pragmas -> condsyms;
pragmas -> ast;
pragmas -> astalgo;
pragmas -> idents;
pragmas -> semdata;
pragmas -> msgs;
pragmas -> rnimsyn;
pragmas -> wordrecg;
pragmas -> ropes;
pragmas -> options;
pragmas -> strutils;
pragmas -> lists;
pragmas -> extccomp;
pragmas -> math;
pragmas -> magicsys;
pragmas -> trees;
sem -> strutils;
sem -> nhashes;
sem -> lists;
sem -> options;
sem -> scanner;
sem -> ast;
sem -> astalgo;
sem -> trees;
sem -> treetab;
sem -> wordrecg;
sem -> ropes;
sem -> msgs;
sem -> os;
sem -> condsyms;
sem -> idents;
sem -> rnimsyn;
sem -> types;
sem -> platform;
sem -> math;
sem -> magicsys;
sem -> pnimsyn;
sem -> nversion;
sem -> nimsets;
sem -> semdata;
sem -> evals;
sem -> semfold;
sem -> importer;
sem -> procfind;
sem -> lookups;
sem -> rodread;
sem -> pragmas;
sem -> passes;
rst -> os;
rst -> msgs;
rst -> strutils;
rst -> platform;
rst -> nhashes;
rst -> ropes;
rst -> options;
highlite -> nhashes;
highlite -> options;
highlite -> msgs;
highlite -> strutils;
highlite -> platform;
highlite -> idents;
highlite -> lexbase;
highlite -> wordrecg;
highlite -> scanner;
docgen -> ast;
docgen -> astalgo;
docgen -> strutils;
docgen -> nhashes;
docgen -> options;
docgen -> nversion;
docgen -> msgs;
docgen -> os;
docgen -> ropes;
docgen -> idents;
docgen -> wordrecg;
docgen -> math;
docgen -> syntaxes;
docgen -> rnimsyn;
docgen -> scanner;
docgen -> rst;
docgen -> times;
docgen -> highlite;
ccgutils -> ast;
ccgutils -> astalgo;
ccgutils -> ropes;
ccgutils -> lists;
ccgutils -> nhashes;
ccgutils -> strutils;
ccgutils -> types;
ccgutils -> msgs;
cgmeth -> options;
cgmeth -> ast;
cgmeth -> astalgo;
cgmeth -> msgs;
cgmeth -> idents;
cgmeth -> rnimsyn;
cgmeth -> types;
cgmeth -> magicsys;
cgen -> ast;
cgen -> astalgo;
cgen -> strutils;
cgen -> nhashes;
cgen -> trees;
cgen -> platform;
cgen -> magicsys;
cgen -> extccomp;
cgen -> options;
cgen -> nversion;
cgen -> nimsets;
cgen -> msgs;
cgen -> crc;
cgen -> bitsets;
cgen -> idents;
cgen -> lists;
cgen -> types;
cgen -> ccgutils;
cgen -> os;
cgen -> times;
cgen -> ropes;
cgen -> math;
cgen -> passes;
cgen -> rodread;
cgen -> wordrecg;
cgen -> rnimsyn;
cgen -> treetab;
cgen -> cgmeth;
jsgen -> ast;
jsgen -> astalgo;
jsgen -> strutils;
jsgen -> nhashes;
jsgen -> trees;
jsgen -> platform;
jsgen -> magicsys;
jsgen -> extccomp;
jsgen -> options;
jsgen -> nversion;
jsgen -> nimsets;
jsgen -> msgs;
jsgen -> crc;
jsgen -> bitsets;
jsgen -> idents;
jsgen -> lists;
jsgen -> types;
jsgen -> os;
jsgen -> times;
jsgen -> ropes;
jsgen -> math;
jsgen -> passes;
jsgen -> ccgutils;
jsgen -> wordrecg;
jsgen -> rnimsyn;
jsgen -> rodread;
interact -> llstream;
interact -> strutils;
interact -> ropes;
interact -> nstrtabs;
interact -> msgs;
passaux -> strutils;
passaux -> ast;
passaux -> astalgo;
passaux -> passes;
passaux -> msgs;
passaux -> options;
depends -> os;
depends -> options;
depends -> ast;
depends -> astalgo;
depends -> msgs;
depends -> ropes;
depends -> idents;
depends -> passes;
depends -> importer;
transf -> strutils;
transf -> lists;
transf -> options;
transf -> ast;
transf -> astalgo;
transf -> trees;
transf -> treetab;
transf -> evals;
transf -> msgs;
transf -> os;
transf -> idents;
transf -> rnimsyn;
transf -> types;
transf -> passes;
transf -> semfold;
transf -> magicsys;
transf -> cgmeth;
main -> llstream;
main -> strutils;
main -> ast;
main -> astalgo;
main -> scanner;
main -> syntaxes;
main -> rnimsyn;
main -> options;
main -> msgs;
main -> os;
main -> lists;
main -> condsyms;
main -> paslex;
main -> pasparse;
main -> rodread;
main -> rodwrite;
main -> ropes;
main -> trees;
main -> wordrecg;
main -> sem;
main -> semdata;
main -> idents;
main -> passes;
main -> docgen;
main -> extccomp;
main -> cgen;
main -> jsgen;
main -> platform;
main -> interact;
main -> nimconf;
main -> importer;
main -> passaux;
main -> depends;
main -> transf;
main -> evals;
main -> types;
parseopt -> os;
parseopt -> strutils;
nimrod -> times;
nimrod -> commands;
nimrod -> scanner;
nimrod -> condsyms;
nimrod -> options;
nimrod -> msgs;
nimrod -> nversion;
nimrod -> nimconf;
nimrod -> ropes;
nimrod -> extccomp;
nimrod -> strutils;
nimrod -> os;
nimrod -> platform;
nimrod -> main;
nimrod -> parseopt;
}

View File

@@ -111,6 +111,7 @@ var
gDirtyBufferIdx* = 0'i32 # indicates the fileIdx of the dirty version of
# the tracked source X, saved by the CAAS client.
gDirtyOriginalIdx* = 0'i32 # the original source file of the dirtified buffer.
gNoBabelPath* = false
proc importantComments*(): bool {.inline.} = gCmd in {cmdDoc, cmdIdeTools}
proc usesNativeGC*(): bool {.inline.} = gSelectedGC >= gcRefc

View File

@@ -62,3 +62,9 @@ Currently, the following C compilers are supported under Windows:
| http://www.digitalmars.com/download/freecompiler.html
However, most testing is done with GCC.
Bootstrapping from Github
-------------------------
Take a look at the readme file on github `here <https://github.com/Araq/Nimrod#readme>`_
for instructions.

View File

@@ -699,7 +699,18 @@ proc formatNamedVars*(frmt: string, varnames: openArray[string],
proc defaultConfig*(): PStringTable =
## creates a default configuration for HTML generation.
## Returns a default configuration for embedded HTML generation.
##
## The returned ``PStringTable`` contains the paramters used by the HTML
## engine to build the final output. For information on what these parameters
## are and their purpose, please look up the file ``config/nimdoc.cfg``
## bundled with the compiler.
##
## The only difference between the contents of that file and the values
## provided by this proc is the ``doc.file`` variable. The ``doc.file``
## variable of the configuration file contains HTML to build standalone
## pages, while this proc returns just the content for procs like
## ``rstToHtml`` to generate the bare minimum HTML.
result = newStringTable(modeStyleInsensitive)
template setConfigVar(key, val: expr) =

View File

@@ -233,8 +233,11 @@ proc asyncSockHandleWrite(h: PObject) =
let sock = PAsyncSocket(h)
try:
let bytesSent = sock.socket.sendAsync(sock.sendBuffer)
assert bytesSent > 0
if bytesSent != sock.sendBuffer.len:
if bytesSent == 0:
# Apparently the socket cannot be written to. Even though select
# just told us that it can be... This used to be an assert. Just
# do nothing instead.
elif bytesSent != sock.sendBuffer.len:
sock.sendBuffer = sock.sendBuffer[bytesSent .. -1]
elif bytesSent == sock.sendBuffer.len:
sock.sendBuffer = ""

View File

@@ -220,9 +220,8 @@ proc parseResponse(s: TSocket, getBody: bool, timeout: int): TResponse =
inc(linei, le)
if line[linei] != ':': httpError("invalid headers")
inc(linei) # Skip :
linei += skipWhitespace(line, linei)
result.headers[name] = line[linei.. -1]
result.headers[name] = line[linei.. -1].strip()
if not fullyRead:
httpError("Connection was closed before full request has been made")
if getBody:

View File

@@ -387,6 +387,14 @@ proc existsDir*(dir: string): bool {.rtl, extern: "nos$1", tags: [FReadDir].} =
var res: TStat
return stat(dir, res) >= 0'i32 and S_ISDIR(res.st_mode)
proc fileExists*(filename: string): bool {.inline.} =
## Synonym for existsFile
existsFile(filename)
proc dirExists*(dir: string): bool {.inline.} =
## Synonym for existsDir
existsDir(dir)
proc getLastModificationTime*(file: string): TTime {.rtl, extern: "nos$1".} =
## Returns the `file`'s last modification time.
when defined(posix):

View File

@@ -132,6 +132,10 @@ proc toUTF8*(c: TRune): string {.rtl, extern: "nuc$1".} =
result = newString(1)
result[0] = chr(i)
proc `$`*(rune: TRune): string =
## converts a rune to a string
rune.toUTF8
proc `$`*(runes: seq[TRune]): string =
## converts a sequence of runes to a string
result = ""

View File

@@ -2708,7 +2708,23 @@ proc locals*(): TObject {.magic: "Locals", noSideEffect.} =
## in the current scope. This is quite fast as it does not rely
## on any debug or runtime information. Note that in constrast to what
## the official signature says, the return type is not ``TObject`` but a
## tuple of a structure that depends on the current scope.
## tuple of a structure that depends on the current scope. Example:
##
## .. code-block:: nimrod
## proc testLocals() =
## var
## a = "something"
## b = 4
## c = locals()
## d = "super!"
##
## b = 1
## for name, value in fieldPairs(c):
## echo "name ", name, " with value ", value
## echo "B is ", b
## # -> name a with value something
## # -> name b with value 4
## # -> B is 1
discard
when not defined(booting):
@@ -2719,4 +2735,3 @@ when not defined(booting):
template isStatic*(x): expr = compiles(static(x))
# checks whether `x` is a value known at compile-time

View File

@@ -0,0 +1,57 @@
discard """
output: '''(a: 3
b: 4
s: abc
)'''
"""
import macros
proc invalidFormatString() =
echo "invalidFormatString"
template formatImpl(handleChar: expr) =
var i = 0
while i < f.len:
if f[i] == '$':
case f[i+1]
of '1'..'9':
var j = 0
i += 1
while f[i] in {'0'..'9'}:
j = j * 10 + ord(f[i]) - ord('0')
i += 1
result.add(a[j-1])
else:
invalidFormatString()
else:
result.add(handleChar(f[i]))
i += 1
proc `%`*(f: string, a: openArray[string]): string =
template identity(x: expr): expr = x
result = ""
formatImpl(identity)
macro optFormat{`%`(f, a)}(f: string{lit}, a: openArray[string]): expr =
result = newNimNode(nnkBracket)
let f = f.strVal
formatImpl(newLit)
result = nestList(!"&", result)
template optAdd1{x = y; add(x, z)}(x, y, z: string) =
x = y & z
proc `/&` [T: object](x: T): string =
result = "("
for name, value in fieldPairs(x):
result.add("$1: $2\n" % [name, $value])
result.add(")")
type
MyObject = object
a, b: int
s: string
let obj = MyObject(a: 3, b: 4, s: "abc")
echo(/&obj)

11
tests/showoff/thello2.nim Normal file
View File

@@ -0,0 +1,11 @@
discard """
output: '''(a: 3, b: 4, s: abc)'''
"""
type
MyObject = object
a, b: int
s: string
let obj = MyObject(a: 3, b: 4, s: "abc")
echo obj

11
tests/showoff/thtml1.nim Normal file
View File

@@ -0,0 +1,11 @@
discard """
output: "<br>"
"""
template htmlTag(tag: expr) {.immediate.} =
proc tag(): string = "<" & astToStr(tag) & ">"
htmlTag(br)
htmlTag(html)
echo br()

37
tests/showoff/thtml2.nim Normal file
View File

@@ -0,0 +1,37 @@
discard """
output: "<html><head><title>now look at this</title></head><body><ul><li>Nimrod is quite capable</li></ul></body></html>"
"""
import strutils
template html(name: expr, matter: stmt) {.immediate.} =
proc name(): string =
result = "<html>"
matter
result.add("</html>")
template nestedTag(tag: expr) {.immediate.} =
template tag(matter: stmt) {.immediate.} =
result.add("<" & astToStr(tag) & ">")
matter
result.add("</" & astToStr(tag) & ">")
template simpleTag(tag: expr) {.immediate.} =
template tag(matter: expr) {.immediate.} =
result.add("<$1>$2</$1>" % [astToStr(tag), matter])
nestedTag body
nestedTag head
nestedTag ul
simpleTag title
simpleTag li
html mainPage:
head:
title "now look at this"
body:
ul:
li "Nimrod is quite capable"
echo mainPage()

22
tests/showoff/tonce.nim Normal file
View File

@@ -0,0 +1,22 @@
discard """
output: '''first call of p
some call of p
new instantiation
some call of p'''
"""
template once(body: stmt) =
var x {.global.} = false
if not x:
x = true
body
proc p() =
once:
echo "first call of p"
echo "some call of p"
p()
once:
echo "new instantiation"
p()

View File

@@ -0,0 +1,14 @@
discard """
outputsub: '''tquasiquote.nim(14,8): Check failed: 1 > 2'''
"""
import macros
macro check(ex: expr): stmt =
var info = ex.lineInfo
var expString = ex.toStrLit
result = quote do:
if not `ex`:
echo `info`, ": Check failed: ", `expString`
check 1 > 2

View File

@@ -17,8 +17,8 @@ REM call the compiler:
# var linkCmd = ""
# for ff in items(c.cfiles[winIndex][cpuIndex]):
# let f = ff.toWin
ECHO %CC% %COMP_FLAGS% -Inimcache -c ?{f} -o ?{changeFileExt(f, "o")}
%CC% %COMP_FLAGS% -Inimcache -c ?{f} -o ?{changeFileExt(f, "o")}
ECHO %CC% %COMP_FLAGS% -Ic_code -c ?{f} -o ?{changeFileExt(f, "o")}
%CC% %COMP_FLAGS% -Ic_code -c ?{f} -o ?{changeFileExt(f, "o")}
# linkCmd.add(" " & changeFileExt(f, "o"))
# end for

View File

@@ -128,8 +128,8 @@ case $myos in
# var linkCmd = ""
# for ff in items(c.cfiles[osA][cpuA]):
# let f = ff.toUnix
echo "$CC $COMP_FLAGS -Inimcache -c ?{f} -o ?{changeFileExt(f, "o")}"
$CC $COMP_FLAGS -Inimcache -c ?{f} -o ?{changeFileExt(f, "o")}
echo "$CC $COMP_FLAGS -Ic_code -c ?{f} -o ?{changeFileExt(f, "o")}"
$CC $COMP_FLAGS -Ic_code -c ?{f} -o ?{changeFileExt(f, "o")}
# add(linkCmd, " \\\n" & changeFileExt(f, "o"))
# end for
echo "$LINKER -o ?{"$binDir/" & toLower(c.name)} ?linkCmd $LINK_FLAGS"

View File

@@ -392,7 +392,7 @@ proc readCFiles(c: var TConfigData, osA, cpuA: int) =
quit("Cannot open: " & f)
proc buildDir(os, cpu: int): string =
return "nimcache" / ($os & "_" & $cpu)
return "c_code" / ($os & "_" & $cpu)
proc getOutputDir(c: var TConfigData): string =
if c.outdir.len > 0: c.outdir else: "build"
@@ -432,11 +432,11 @@ proc writeInstallScripts(c: var TConfigData) =
writeFile(deinstallShFile, generateDeinstallScript(c), "\10")
proc srcdist(c: var TConfigData) =
if not existsDir(getOutputDir(c) / "nimcache"):
createDir(getOutputDir(c) / "nimcache")
if not existsDir(getOutputDir(c) / "c_code"):
createDir(getOutputDir(c) / "c_code")
for x in walkFiles(c.libpath / "lib/*.h"):
echo(getOutputDir(c) / "nimcache" / extractFilename(x))
copyFile(dest=getOutputDir(c) / "nimcache" / extractFilename(x), source=x)
echo(getOutputDir(c) / "c_code" / extractFilename(x))
copyFile(dest=getOutputDir(c) / "c_code" / extractFilename(x), source=x)
var winIndex = -1
var intel32Index = -1
var intel64Index = -1

View File

@@ -9,6 +9,8 @@ Bug reports: http://github.com/Araq/Nimrod/issues.
For quickest feedback, join our IRC channel: irc://irc.freenode.net/nimrod
(logs at `<http://build.nimrod-code.org/irclogs/>`_).
Check out our Twitter account for latest news and announcements: `@nimrodlang <http://twitter.com/nimrodlang>`_.
How to help
===========