Commit 449969a4 authored by Ian Lance Taylor's avatar Ian Lance Taylor

cmd/internal/ld, cmd/dist: support -buildmode=c-archive on linux

Change-Id: I8c97751a79b57197428b0f0b66fc9575708a2eb0
Reviewed-on: https://go-review.googlesource.com/8979
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: 's avatarDavid Crawshaw <crawshaw@golang.org>
parent c1c66754
......@@ -272,8 +272,7 @@ func (t *tester) registerTests() {
} else if t.hasBash() && t.goos != "android" && !iOS {
t.registerTest("testso", "../misc/cgo/testso", "./test.bash")
}
if t.extLink() && t.goos == "darwin" && t.goarch == "amd64" {
// TODO(crawshaw): add darwin/arm{,64}
if t.buildmode("c-archive") {
t.registerTest("testcarchive", "../misc/cgo/testcarchive", "./test.bash")
}
if t.gohostos == "linux" && t.goarch == "amd64" {
......@@ -370,6 +369,26 @@ func (t *tester) extLink() bool {
return false
}
func (t *tester) buildmode(mode string) bool {
switch mode {
case "c-archive":
switch {
case !t.extLink():
return false
case t.goos == "darwin" && t.goarch == "amd64":
// TODO(crawshaw): add darwin/arm{,64}
return true
case t.goos == "linux" && t.goarch == "amd64":
return true
default:
return false
}
default:
log.Fatal("internal error: unknown buildmode %s", mode)
return false
}
}
func (t *tester) cgoTest() error {
env := mergeEnvLists([]string{"GOTRACEBACK=2"}, os.Environ())
......
......@@ -288,7 +288,9 @@ func (mode *BuildMode) Set(s string) error {
case "exe":
*mode = BuildmodeExe
case "c-archive":
if goos != "darwin" {
switch goos {
case "darwin", "linux":
default:
return badmode()
}
*mode = BuildmodeCArchive
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment