From: Ian Lance Taylor Date: Wed, 8 Nov 2017 19:06:09 +0000 (-0800) Subject: cmd/go: add dependencies for implicit SWIG imports X-Git-Tag: go1.10beta1~235 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=da21113b0c1d1b2979657d78320c31ffcb3c2c92;p=gostls13.git cmd/go: add dependencies for implicit SWIG imports This fixes the misc/swig tests. Change-Id: I60c87bbd361fe8b4f69e4507b25dc99a226da3d7 Reviewed-on: https://go-review.googlesource.com/76610 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Russ Cox --- diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index b2cfc8c26d..27684fa1f3 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -958,13 +958,23 @@ func (p *Package) load(stk *ImportStack, bp *build.Package, err error) { // Cgo translation adds imports of "runtime/cgo" and "syscall", // except for certain packages, to avoid circular dependencies. - if len(p.CgoFiles) > 0 && (!p.Standard || !cgoExclude[p.ImportPath]) { + if p.UsesCgo() && (!p.Standard || !cgoExclude[p.ImportPath]) { addImport("runtime/cgo") } - if len(p.CgoFiles) > 0 && (!p.Standard || !cgoSyscallExclude[p.ImportPath]) { + if p.UsesCgo() && (!p.Standard || !cgoSyscallExclude[p.ImportPath]) { addImport("syscall") } + // SWIG adds imports of some standard packages. + if p.UsesSwig() { + addImport("runtime/cgo") + addImport("syscall") + addImport("sync") + + // TODO: The .swig and .swigcxx files can use + // %go_import directives to import other packages. + } + // The linker loads implicit dependencies. if p.Name == "main" && !p.Internal.ForceLibrary { for _, dep := range LinkerDeps(p) {