diff options
Diffstat (limited to 'compiler/options.nim')
-rw-r--r-- | compiler/options.nim | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/compiler/options.nim b/compiler/options.nim index 98224a11d..2716a98d3 100644 --- a/compiler/options.nim +++ b/compiler/options.nim @@ -40,7 +40,7 @@ type # please make sure we have under 32 options TGlobalOption* = enum # **keep binary compatible** gloptNone, optForceFullMake, optDeadCodeElim, optListCmd, optCompileOnly, optNoLinking, - optSafeCode, # only allow safe code + optReportConceptFailures, # report 'compiles' or 'concept' matching failures optCDebug, # turn on debugging information optGenDynLib, # generate a dynamic library optGenStaticLib, # generate a static library @@ -66,11 +66,14 @@ type # please make sure we have under 32 options # also: generate header file optIdeDebug # idetools: debug mode optIdeTerse # idetools: use terse descriptions + optNoCppExceptions # use C exception handling even with CPP TGlobalOptions* = set[TGlobalOption] TCommands* = enum # Nim's commands # **keep binary compatible** cmdNone, cmdCompileToC, cmdCompileToCpp, cmdCompileToOC, - cmdCompileToJS, cmdCompileToLLVM, cmdInterpret, cmdPretty, cmdDoc, + cmdCompileToJS, + cmdCompileToPHP, + cmdCompileToLLVM, cmdInterpret, cmdPretty, cmdDoc, cmdGenDepend, cmdDump, cmdCheck, # semantic checking for whole project cmdParse, # parse a single file (for debugging) @@ -83,10 +86,12 @@ type # please make sure we have under 32 options cmdRun # run the project via TCC backend TStringSeq* = seq[string] TGCMode* = enum # the selected GC - gcNone, gcBoehm, gcGo, gcMarkAndSweep, gcRefc, gcV2, gcGenerational + gcNone, gcBoehm, gcGo, gcStack, gcMarkAndSweep, gcRefc, + gcV2, gcGenerational IdeCmd* = enum - ideNone, ideSug, ideCon, ideDef, ideUse, ideDus + ideNone, ideSug, ideCon, ideDef, ideUse, ideDus, ideChk, ideMod, + ideHighlight, ideOutline var gIdeCmd*: IdeCmd @@ -146,8 +151,8 @@ var gDllOverrides = newStringTable(modeCaseInsensitive) gPrefixDir* = "" # Overrides the default prefix dir in getPrefixDir proc. libpath* = "" - gProjectName* = "" # holds a name like 'nimrod' - gProjectPath* = "" # holds a path like /home/alice/projects/nimrod/compiler/ + gProjectName* = "" # holds a name like 'nim' + gProjectPath* = "" # holds a path like /home/alice/projects/nim/compiler/ gProjectFull* = "" # projectPath/projectName gProjectIsStdin* = false # whether we're compiling from stdin gProjectMainIdx*: int32 # the canonical path id of the main module @@ -202,6 +207,17 @@ proc setDefaultLibpath*() = else: libpath = joinPath(prefix, "lib") else: libpath = joinPath(prefix, "lib") + # Special rule to support other tools (nimble) which import the compiler + # modules and make use of them. + let realNimPath = # Make sure we expand the symlink + if symlinkExists(findExe("nim")): expandSymlink(findExe("nim")) + else: findExe("nim") + # Find out if $nim/../../lib/system.nim exists. + let parentNimLibPath = realNimPath.parentDir().parentDir() / "lib" + if not fileExists(libpath / "system.nim") and + fileExists(parentNimlibPath / "system.nim"): + libpath = parentNimLibPath + proc canonicalizePath*(path: string): string = when not FileSystemCaseSensitive: result = path.expandFilename.toLower else: result = path.expandFilename @@ -422,6 +438,10 @@ proc parseIdeCmd*(s: string): IdeCmd = of "def": ideDef of "use": ideUse of "dus": ideDus + of "chk": ideChk + of "mod": ideMod + of "highlight": ideHighlight + of "outline": ideOutline else: ideNone proc `$`*(c: IdeCmd): string = @@ -431,4 +451,8 @@ proc `$`*(c: IdeCmd): string = of ideDef: "def" of ideUse: "use" of ideDus: "dus" + of ideChk: "chk" + of ideMod: "mod" of ideNone: "none" + of ideHighlight: "highlight" + of ideOutline: "outline" |