From: Srdjan Petrovic Date: Mon, 13 Apr 2015 22:39:10 +0000 (-0700) Subject: cmd: -buildmode=c-shared for linux/arm X-Git-Tag: go1.5beta1~1130 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=41e9f8c4ed50f52849326eef3ed1106051806b87;p=gostls13.git cmd: -buildmode=c-shared for linux/arm Already supported platforms are linux/amd64 and android/arm. Running -buildmode=c-shared on linux/arm is equivalent to: -ldflags "-shared" -asmflags "-shared" Change-Id: Ifdb267f1d6508157f236be912fa369440172d161 Reviewed-on: https://go-review.googlesource.com/8895 Reviewed-by: David Crawshaw --- diff --git a/src/cmd/go/build.go b/src/cmd/go/build.go index 2bb9924995..3e40394e5a 100644 --- a/src/cmd/go/build.go +++ b/src/cmd/go/build.go @@ -308,6 +308,7 @@ var pkgsFilter = func(pkgs []*Package) []*Package { return pkgs } func buildModeInit() { var codegenArg, ldBuildmode string + platform := goos + "/" + goarch switch buildBuildmode { case "archive": pkgsFilter = pkgsNotMain @@ -322,16 +323,16 @@ func buildModeInit() { ldBuildmode = "c-archive" case "c-shared": pkgsFilter = pkgsMain - platform := goos + "/" + goarch switch platform { case "linux/amd64": + codegenArg = "-shared" + buildGcflags = append(buildGcflags, codegenArg) + case "linux/arm": + codegenArg = "-shared" case "android/arm": default: fatalf("-buildmode=c-shared not supported on %s\n", platform) } - if goarch == "amd64" { - codegenArg = "-shared" - } ldBuildmode = "c-shared" case "default": ldBuildmode = "exe" @@ -342,11 +343,12 @@ func buildModeInit() { fatalf("buildmode=%s not supported", buildBuildmode) } if buildLinkshared { - if goarch != "amd64" || goos != "linux" { + if platform != "linux/amd64" { fmt.Fprintf(os.Stderr, "go %s: -linkshared is only supported on linux/amd64\n", flag.Args()[0]) os.Exit(2) } codegenArg = "-dynlink" + buildGcflags = append(buildGcflags, codegenArg) // TODO(mwhudson): remove -w when that gets fixed in linker. buildLdflags = append(buildLdflags, "-linkshared", "-w") } @@ -355,7 +357,6 @@ func buildModeInit() { } if codegenArg != "" { buildAsmflags = append(buildAsmflags, codegenArg) - buildGcflags = append(buildGcflags, codegenArg) if buildContext.InstallSuffix != "" { buildContext.InstallSuffix += "_" }