std/compilesettings implementation (#13584)
* Implement compileSetting() and compileSettingSeq() * Change from magic to vmop * better design for querySetting Co-authored-by: genotrance <dev@genotrance.com>
This commit is contained in:
parent
0809098971
commit
614fb7567c
4 changed files with 118 additions and 0 deletions
54
lib/std/compilesettings.nim
Normal file
54
lib/std/compilesettings.nim
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
#
|
||||
#
|
||||
# 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
|
||||
|
||||
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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue