]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/cmd/internal/objabi/util.go
internal/buildcfg: move build configuration out of cmd/internal/objabi
[gostls13.git] / src / cmd / internal / objabi / util.go
index 5a7a74cfde8d0441ddc839421aeb8c487cdfc3a7..63640950d9f8ee609ad30e607c1528b4664d5b77 100644 (file)
@@ -6,32 +6,9 @@ package objabi
 
 import (
        "fmt"
-       "log"
-       "os"
        "strings"
-)
-
-func envOr(key, value string) string {
-       if x := os.Getenv(key); x != "" {
-               return x
-       }
-       return value
-}
 
-var (
-       defaultGOROOT string // set by linker
-
-       GOROOT   = envOr("GOROOT", defaultGOROOT)
-       GOARCH   = envOr("GOARCH", defaultGOARCH)
-       GOOS     = envOr("GOOS", defaultGOOS)
-       GO386    = envOr("GO386", defaultGO386)
-       GOARM    = goarm()
-       GOMIPS   = gomips()
-       GOMIPS64 = gomips64()
-       GOPPC64  = goppc64()
-       GOWASM   = gowasm()
-       GO_LDSO  = defaultGO_LDSO
-       Version  = version
+       "internal/buildcfg"
 )
 
 const (
@@ -39,94 +16,10 @@ const (
        MachoRelocOffset = 2048 // reserve enough space for ELF relocations
 )
 
-func goarm() int {
-       def := defaultGOARM
-       if GOOS == "android" && GOARCH == "arm" {
-               // Android arm devices always support GOARM=7.
-               def = "7"
-       }
-       switch v := envOr("GOARM", def); v {
-       case "5":
-               return 5
-       case "6":
-               return 6
-       case "7":
-               return 7
-       }
-       // Fail here, rather than validate at multiple call sites.
-       log.Fatalf("Invalid GOARM value. Must be 5, 6, or 7.")
-       panic("unreachable")
-}
-
-func gomips() string {
-       switch v := envOr("GOMIPS", defaultGOMIPS); v {
-       case "hardfloat", "softfloat":
-               return v
-       }
-       log.Fatalf("Invalid GOMIPS value. Must be hardfloat or softfloat.")
-       panic("unreachable")
-}
-
-func gomips64() string {
-       switch v := envOr("GOMIPS64", defaultGOMIPS64); v {
-       case "hardfloat", "softfloat":
-               return v
-       }
-       log.Fatalf("Invalid GOMIPS64 value. Must be hardfloat or softfloat.")
-       panic("unreachable")
-}
-
-func goppc64() int {
-       switch v := envOr("GOPPC64", defaultGOPPC64); v {
-       case "power8":
-               return 8
-       case "power9":
-               return 9
-       }
-       log.Fatalf("Invalid GOPPC64 value. Must be power8 or power9.")
-       panic("unreachable")
-}
-
-type gowasmFeatures struct {
-       SignExt bool
-       SatConv bool
-}
-
-func (f gowasmFeatures) String() string {
-       var flags []string
-       if f.SatConv {
-               flags = append(flags, "satconv")
-       }
-       if f.SignExt {
-               flags = append(flags, "signext")
-       }
-       return strings.Join(flags, ",")
-}
-
-func gowasm() (f gowasmFeatures) {
-       for _, opt := range strings.Split(envOr("GOWASM", ""), ",") {
-               switch opt {
-               case "satconv":
-                       f.SatConv = true
-               case "signext":
-                       f.SignExt = true
-               case "":
-                       // ignore
-               default:
-                       log.Fatalf("Invalid GOWASM value. No such feature: " + opt)
-               }
-       }
-       return
-}
-
-func Getgoextlinkenabled() string {
-       return envOr("GO_EXTLINK_ENABLED", defaultGO_EXTLINK_ENABLED)
-}
-
 // HeaderString returns the toolchain configuration string written in
 // Go object headers. This string ensures we don't attempt to import
 // or link object files that are incompatible with each other. This
 // string always starts with "go object ".
 func HeaderString() string {
-       return fmt.Sprintf("go object %s %s %s X:%s\n", GOOS, GOARCH, Version, strings.Join(EnabledExperiments(), ","))
+       return fmt.Sprintf("go object %s %s %s X:%s\n", buildcfg.GOOS, buildcfg.GOARCH, buildcfg.Version, strings.Join(buildcfg.EnabledExperiments(), ","))
 }