diff options
author | Ayke van Laethem <[email protected]> | 2021-04-06 16:06:12 +0200 |
---|---|---|
committer | Ron Evans <[email protected]> | 2021-04-09 18:33:48 +0200 |
commit | 33f76d1c2e914bd477bb19060670ae5c3608cf41 (patch) | |
tree | 50cd44f9bac6e426e9fd0e0098163616b531bc34 /compileopts/options.go | |
parent | ea8f7ba1f9b1e69a21c36ba3f7ed81097ea5e79f (diff) | |
download | tinygo-33f76d1c2e914bd477bb19060670ae5c3608cf41.tar.gz tinygo-33f76d1c2e914bd477bb19060670ae5c3608cf41.zip |
main: implement -ldflags="-X ..."
This commit implements replacing some global variables with a different
value, if the global variable has no initializer. For example, if you
have:
package main
var version string
you can replace the value with -ldflags="-X main.version=0.2".
Right now it only works for uninitialized globals. The Go tooling also
supports initialized globals (var version = "<undefined>") but that is a
bit hard to combine with how initialized globals are currently
implemented.
The current implementation still allows caching package IR files while
making sure the values don't end up in the build cache. This means
compiling a program multiple times with different values will use the
cached package each time, inserting the string value only late in the
build process.
Fixes #1045
Diffstat (limited to 'compileopts/options.go')
-rw-r--r-- | compileopts/options.go | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/compileopts/options.go b/compileopts/options.go index a12a92cd9..7570fefe5 100644 --- a/compileopts/options.go +++ b/compileopts/options.go @@ -30,6 +30,7 @@ type Options struct { PrintStacks bool Tags string WasmAbi string + GlobalValues map[string]map[string]string // map[pkgpath]map[varname]value TestConfig TestConfig Programmer string } |