diff options
Diffstat (limited to 'libgo/go')
-rw-r--r-- | libgo/go/cmd/go/build.go | 9 | ||||
-rw-r--r-- | libgo/go/cmd/go/pkg.go | 1 | ||||
-rw-r--r-- | libgo/go/cmd/go/test.go | 9 |
3 files changed, 14 insertions, 5 deletions
diff --git a/libgo/go/cmd/go/build.go b/libgo/go/cmd/go/build.go index 22d37f3..781a43b 100644 --- a/libgo/go/cmd/go/build.go +++ b/libgo/go/cmd/go/build.go @@ -1921,6 +1921,7 @@ func (tools gccgoToolchain) ld(b *builder, p *Package, out string, allactions [] // and all LDFLAGS from cgo dependencies. apackagesSeen := make(map[*Package]bool) afiles := []string{} + xfiles := []string{} ldflags := b.gccArchArgs() cgoldflags := []string{} usesCgo := false @@ -1936,7 +1937,12 @@ func (tools gccgoToolchain) ld(b *builder, p *Package, out string, allactions [] if !a.p.Standard { if a.p != nil && !apackagesSeen[a.p] { apackagesSeen[a.p] = true - if a.p.fake { + if a.p.fake && a.p.external { + // external _tests, if present must come before + // internal _tests. Store these on a seperate list + // and place them at the head after this loop. + xfiles = append(xfiles, a.target) + } else if a.p.fake { // move _test files to the top of the link order afiles = append([]string{a.target}, afiles...) } else { @@ -1945,6 +1951,7 @@ func (tools gccgoToolchain) ld(b *builder, p *Package, out string, allactions [] } } } + afiles = append(xfiles, afiles...) for _, a := range allactions { if a.p != nil { diff --git a/libgo/go/cmd/go/pkg.go b/libgo/go/cmd/go/pkg.go index 62f6b4a..ef440dd 100644 --- a/libgo/go/cmd/go/pkg.go +++ b/libgo/go/cmd/go/pkg.go @@ -83,6 +83,7 @@ type Package struct { allgofiles []string // gofiles + IgnoredGoFiles, absolute paths target string // installed file for this package (may be executable) fake bool // synthesized package + external bool // synthesized external test package forceBuild bool // this package must be rebuilt forceLibrary bool // this package is a library (even if named "main") cmdline bool // defined by files listed on command line diff --git a/libgo/go/cmd/go/test.go b/libgo/go/cmd/go/test.go index cc0a9ac..5cf7aaf 100644 --- a/libgo/go/cmd/go/test.go +++ b/libgo/go/cmd/go/test.go @@ -692,10 +692,11 @@ func (b *builder) test(p *Package) (buildAction, runAction, printAction *action, build: &build.Package{ ImportPos: p.build.XTestImportPos, }, - imports: ximports, - pkgdir: testDir, - fake: true, - Stale: true, + imports: ximports, + pkgdir: testDir, + fake: true, + external: true, + Stale: true, } if pxtestNeedsPtest { pxtest.imports = append(pxtest.imports, ptest) |