]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/cgo: don't depend on runtime/cgo if !CgoEnabled
authorIan Lance Taylor <iant@golang.org>
Thu, 10 Nov 2016 23:19:11 +0000 (15:19 -0800)
committerIan Lance Taylor <iant@golang.org>
Thu, 10 Nov 2016 23:58:25 +0000 (23:58 +0000)
Fixes the build when CGO_ENABLED=0.

Change-Id: I7f3c67d61e156e69536558fda0a0a4b429b82bbd
Reviewed-on: https://go-review.googlesource.com/33104
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/go/pkg.go

index 23d3114682bae2958ce929dc80de6f86e2d9f84b..064a428703b08f7b2fd7807f3e9772b5d920e005 100644 (file)
@@ -913,23 +913,25 @@ func (p *Package) load(stk *importStack, bp *build.Package, err error) *Package
                importPaths = append(importPaths, "syscall")
        }
 
-       // Currently build modes c-shared, pie (on systems that do not
-       // support PIE with internal linking mode), plugin, and
-       // -linkshared force external linking mode, as of course does
-       // -ldflags=-linkmode=external. External linking mode forces
-       // an import of runtime/cgo.
-       pieCgo := buildBuildmode == "pie" && (buildContext.GOOS != "linux" || buildContext.GOARCH != "amd64")
-       linkmodeExternal := false
-       for i, a := range buildLdflags {
-               if a == "-linkmode=external" {
-                       linkmodeExternal = true
-               }
-               if a == "-linkmode" && i+1 < len(buildLdflags) && buildLdflags[i+1] == "external" {
-                       linkmodeExternal = true
-               }
-       }
-       if p.Name == "main" && !p.Goroot && (buildBuildmode == "c-shared" || buildBuildmode == "plugin" || pieCgo || buildLinkshared || linkmodeExternal) {
-               importPaths = append(importPaths, "runtime/cgo")
+       if buildContext.CgoEnabled && p.Name == "main" && !p.Goroot {
+               // Currently build modes c-shared, pie (on systems that do not
+               // support PIE with internal linking mode), plugin, and
+               // -linkshared force external linking mode, as of course does
+               // -ldflags=-linkmode=external. External linking mode forces
+               // an import of runtime/cgo.
+               pieCgo := buildBuildmode == "pie" && (buildContext.GOOS != "linux" || buildContext.GOARCH != "amd64")
+               linkmodeExternal := false
+               for i, a := range buildLdflags {
+                       if a == "-linkmode=external" {
+                               linkmodeExternal = true
+                       }
+                       if a == "-linkmode" && i+1 < len(buildLdflags) && buildLdflags[i+1] == "external" {
+                               linkmodeExternal = true
+                       }
+               }
+               if buildBuildmode == "c-shared" || buildBuildmode == "plugin" || pieCgo || buildLinkshared || linkmodeExternal {
+                       importPaths = append(importPaths, "runtime/cgo")
+               }
        }
 
        // Everything depends on runtime, except runtime, its internal