1
0
mirror of https://github.com/golang/go synced 2024-09-24 09:20:15 -06:00

cmd/go: add GOWASM environment variable

This change adds the environment variable GOWASM, which is a comma
separated list of experimental WebAssembly features that the compiled
WebAssembly binary is allowed to use. The default is to use no
experimental features. Initially there are no features avaiable.

More information about feature proposals can be found at
https://github.com/WebAssembly/proposals

Change-Id: I4c8dc534c99ecff8bb075dded0186ca8f8decaef
Reviewed-on: https://go-review.googlesource.com/c/go/+/168881
Run-TryBot: Richard Musiol <neelance@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Richard Musiol 2019-03-23 14:18:19 +01:00 committed by Richard Musiol
parent 2396101e05
commit b434bbf197
4 changed files with 38 additions and 0 deletions

View File

@ -638,6 +638,17 @@ for which the compiler will target. The default is <code>power8</code>.
</ul>
</li>
<li><code>$GOWASM</code> (for <code>wasm</code> only)
<p>
This variable is a comma separated list of <a href="https://github.com/WebAssembly/proposals">experimental WebAssembly features</a> that the compiled WebAssembly binary is allowed to use.
The default is to use no experimental features.
</p>
<ul>
<li>(no features yet)</li>
</ul>
</li>
</ul>
<p>

View File

@ -105,6 +105,7 @@ var (
GOMIPS = objabi.GOMIPS
GOMIPS64 = objabi.GOMIPS64
GOPPC64 = fmt.Sprintf("%s%d", "power", objabi.GOPPC64)
GOWASM = objabi.GOWASM
)
// Update build context to use our computed GOROOT.

View File

@ -83,6 +83,8 @@ func MkEnv() []cfg.EnvVar {
env = append(env, cfg.EnvVar{Name: "GOMIPS64", Value: cfg.GOMIPS64})
case "ppc64", "ppc64le":
env = append(env, cfg.EnvVar{Name: "GOPPC64", Value: cfg.GOPPC64})
case "wasm":
env = append(env, cfg.EnvVar{Name: "GOWASM", Value: cfg.GOWASM.String()})
}
cc := cfg.DefaultCC(cfg.Goos, cfg.Goarch)

View File

@ -29,6 +29,7 @@ var (
GOMIPS = gomips()
GOMIPS64 = gomips64()
GOPPC64 = goppc64()
GOWASM = gowasm()
GO_LDSO = defaultGO_LDSO
Version = version
)
@ -76,6 +77,29 @@ func goppc64() int {
panic("unreachable")
}
type gowasmFeatures struct {
// no features yet
}
func (f *gowasmFeatures) String() string {
var flags []string
// no features yet
return strings.Join(flags, ",")
}
func gowasm() (f gowasmFeatures) {
for _, opt := range strings.Split(envOr("GOWASM", ""), ",") {
switch opt {
// no features yet
case "":
// ignore
default:
log.Fatalf("Invalid GOWASM value. No such feature: " + opt)
}
}
return
}
func Getgoextlinkenabled() string {
return envOr("GO_EXTLINK_ENABLED", defaultGO_EXTLINK_ENABLED)
}