diff options
author | Ian Lance Taylor <iant@golang.org> | 2016-01-12 21:24:49 -0800 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2016-01-13 15:14:04 +0000 |
commit | f3ce054a44a84795bec8a8155c8997226b113f76 (patch) | |
tree | 1dc987326ff002e91e78e5f081b98401adb4d655 | |
parent | 1d1f2fb4c6e4da4a88a0ab8a0b43822d411a23ea (diff) | |
download | go-f3ce054a44a84795bec8a8155c8997226b113f76.tar.gz go-f3ce054a44a84795bec8a8155c8997226b113f76.zip |
cmd/go: fixes for -compiler=gccgo -buildmode=c-shared
Install pkg.h rather than libpkg.h.
Link against -lc.
Fixes #13860.
Change-Id: I4e429426f8363712a5dbbd2655b9aab802ab2888
Reviewed-on: https://go-review.googlesource.com/18592
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
Reviewed-by: Russ Cox <rsc@golang.org>
-rw-r--r-- | src/cmd/go/build.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/cmd/go/build.go b/src/cmd/go/build.go index ee20a89d86..825fdac5b8 100644 --- a/src/cmd/go/build.go +++ b/src/cmd/go/build.go @@ -999,13 +999,22 @@ func (b *builder) action1(mode buildMode, depMode buildMode, p *Package, looksha // Install header for cgo in c-archive and c-shared modes. if p.usesCgo() && (buildBuildmode == "c-archive" || buildBuildmode == "c-shared") { + hdrTarget := a.target[:len(a.target)-len(filepath.Ext(a.target))] + ".h" + if buildContext.Compiler == "gccgo" { + // For the header file, remove the "lib" + // added by go/build, so we generate pkg.h + // rather than libpkg.h. + dir, file := filepath.Split(hdrTarget) + file = strings.TrimPrefix(file, "lib") + hdrTarget = filepath.Join(dir, file) + } ah := &action{ p: a.p, deps: []*action{a.deps[0]}, f: (*builder).installHeader, pkgdir: a.pkgdir, objdir: a.objdir, - target: a.target[:len(a.target)-len(filepath.Ext(a.target))] + ".h", + target: hdrTarget, } a.deps = append(a.deps, ah) } @@ -2722,7 +2731,7 @@ func (tools gccgoToolchain) ld(b *builder, root *action, out string, allactions out = out + ".o" case "c-shared": - ldflags = append(ldflags, "-shared", "-nostdlib", "-Wl,--whole-archive", "-lgolibbegin", "-Wl,--no-whole-archive", "-lgo", "-lgcc_s", "-lgcc") + ldflags = append(ldflags, "-shared", "-nostdlib", "-Wl,--whole-archive", "-lgolibbegin", "-Wl,--no-whole-archive", "-lgo", "-lgcc_s", "-lgcc", "-lc", "-lgcc") default: fatalf("-buildmode=%s not supported for gccgo", ldBuildmode) |