diff options
author | Araq <rumpf_a@web.de> | 2012-12-09 23:20:48 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2012-12-09 23:20:48 +0100 |
commit | a840a4ce53c2344f77c6e07b4f8cbed0af2820dd (patch) | |
tree | e2f0853a3f85510744ea5e05514c6c6c5688b476 | |
parent | b0dc877cc3cb45cce40f7cd9ad281823bf91cd72 (diff) | |
download | Nim-a840a4ce53c2344f77c6e07b4f8cbed0af2820dd.tar.gz |
improvements for --babelPath
-rw-r--r-- | compiler/babelcmd.nim | 24 | ||||
-rwxr-xr-x | compiler/condsyms.nim | 1 | ||||
-rwxr-xr-x | config/nimrod.cfg | 10 |
3 files changed, 24 insertions, 11 deletions
diff --git a/compiler/babelcmd.nim b/compiler/babelcmd.nim index 99513e58b..97d3bcf6c 100644 --- a/compiler/babelcmd.nim +++ b/compiler/babelcmd.nim @@ -9,7 +9,7 @@ ## Implements some helper procs for Babel (Nimrod's package manager) support. -import parseutils, strtabs, os, options, msgs, lists +import parseutils, strutils, strtabs, os, options, msgs, lists proc addPath*(path: string, info: TLineInfo) = if not contains(options.searchPaths, path): @@ -58,6 +58,23 @@ iterator chosen(packages: PStringTable): string = let res = if val == latest: key else: key & '-' & val yield res +proc addPathWithNimFiles(p: string, info: TLineInfo) = + proc hasNimFile(dir: string): bool = + for kind, path in walkDir(dir): + if kind == pcFile and path.endsWith(".nim"): + return true + + proc addPath(p: string) = + if not contains(options.searchPaths, p): + Message(info, hintPath, p) + lists.PrependStr(options.searchPaths, p) + + if hasNimFile(p): + addPath(p) + else: + for kind, p2 in walkDir(p): + if hasNimFile(p2): addPath(p2) + proc addPathRec(dir: string, info: TLineInfo) = var packages = newStringTable(modeStyleInsensitive) var pos = dir.len-1 @@ -65,11 +82,8 @@ proc addPathRec(dir: string, info: TLineInfo) = for k,p in os.walkDir(dir): if k == pcDir and p[pos] != '.': addPackage(packages, p) - for p in packages.chosen: - if not contains(options.searchPaths, p): - Message(info, hintPath, p) - lists.PrependStr(options.searchPaths, p) + addPathWithNimFiles(p, info) proc babelPath*(path: string, info: TLineInfo) = addPathRec(path, info) diff --git a/compiler/condsyms.nim b/compiler/condsyms.nim index 234029ea9..17366f6e9 100755 --- a/compiler/condsyms.nim +++ b/compiler/condsyms.nim @@ -60,6 +60,7 @@ proc InitDefines*() = DefineSymbol("niminheritable") DefineSymbol("nimmixin") DefineSymbol("nimeffects") + DefineSymbol("nimbabel") # add platform specific symbols: case targetCPU diff --git a/config/nimrod.cfg b/config/nimrod.cfg index 3ae38133d..9db13e836 100755 --- a/config/nimrod.cfg +++ b/config/nimrod.cfg @@ -13,11 +13,6 @@ cc = gcc arm.linux.gcc.exe = "arm-linux-gcc" arm.linux.gcc.linkerexe = "arm-linux-gcc" -@if nim: - # use the old fixed library for bootstrapping with Nim: - lib = "nimlib" -@end - path="$lib/core" path="$lib/pure" path="$lib/pure/collections" @@ -36,7 +31,10 @@ path="$lib/windows" path="$lib/posix" path="$lib/ecmas" path="$lib/pure/unidecode" -path="$home/.babel/libs/" + +@if nimbabel: + babelpath="$home/.babel/libs/" +@end @if release or quick: obj_checks:off |