Files
Nim/lib/std/compilesettings.nim
Timothee Cour 9502e39b63 nim doc --backend:js, nim doc --doccmd:-d:foo, nim r --backend:js, --doccmd:skip + other improvements (#14278)
* `nim doc --backend:js|cpp...`
`nim doc --doccmd:'-d:foo --threads:on'`
`nim r --backend:cpp...` (implies --run --usenimcache)
* --usenimcache works with all targets
* --docCmd:skip now skips compiling snippets; 50X speedup for doc/manual.rst
2020-05-11 12:01:18 +02:00

57 lines
2.5 KiB
Nim

#
#
# The Nim Compiler
# (c) Copyright 2020 Nim Contributors
#
# See the file "copying.txt", included in this
# distribution, for details about the copyright.
#
## This module allows querying the compiler about
## diverse configuration settings.
# Note: Only add new enum values at the end to ensure binary compatibility with
# other Nim compiler versions!
type
SingleValueSetting* {.pure.} = enum ## \
## settings resulting in a single string value
arguments, ## experimental: the arguments passed after '-r'
outFile, ## experimental: the output file
outDir, ## the output directory
nimcacheDir, ## the location of the 'nimcache' directory
projectName, ## the project's name that is being compiled
projectPath, ## experimental: some path to the project that is being compiled
projectFull, ## the full path to the project that is being compiled
command, ## experimental: the command (e.g. 'c', 'cpp', 'doc') passed to
## the Nim compiler
commandLine, ## experimental: the command line passed to Nim
linkOptions, ## additional options passed to the linker
compileOptions, ## additional options passed to the C/C++ compiler
ccompilerPath ## the path to the C/C++ compiler
backend ## the backend (eg: c|cpp|objc|js); both `nim doc --backend:js`
## and `nim js` would imply backend=js
MultipleValueSetting* {.pure.} = enum ## \
## settings resulting in a seq of string values
nimblePaths, ## the nimble path(s)
searchPaths, ## the search path for modules
lazyPaths, ## experimental: even more paths
commandArgs, ## the arguments passed to the Nim compiler
cincludes, ## the #include paths passed to the C/C++ compiler
clibs ## libraries passed to the C/C++ compiler
proc querySetting*(setting: SingleValueSetting): string {.
compileTime, noSideEffect.} = discard
## Can be used to get a string compile-time option. Example:
##
## .. code-block:: Nim
## const nimcache = querySetting(SingleValueSetting.nimcacheDir)
proc querySettingSeq*(setting: MultipleValueSetting): seq[string] {.
compileTime, noSideEffect.} = discard
## Can be used to get a multi-string compile-time option. Example:
##
## .. code-block:: Nim
## const nimblePaths = compileSettingSeq(MultipleValueSetting.nimblePaths)