]> Cypherpunks repositories - gostls13.git/commitdiff
cmd: -buildmode=c-shared for linux/arm
authorSrdjan Petrovic <spetrovic@google.com>
Mon, 13 Apr 2015 22:39:10 +0000 (15:39 -0700)
committerDavid Crawshaw <crawshaw@golang.org>
Mon, 13 Apr 2015 23:25:12 +0000 (23:25 +0000)
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 <crawshaw@golang.org>
src/cmd/go/build.go

index 2bb9924995af267e339828a701e18288f3ca155b..3e40394e5acc47e21b1c6e83ebd8ecb5bda31929 100644 (file)
@@ -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 += "_"
                }