]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: respect $GCFLAGS
authorRuss Cox <rsc@golang.org>
Wed, 21 Dec 2011 14:04:34 +0000 (09:04 -0500)
committerRuss Cox <rsc@golang.org>
Wed, 21 Dec 2011 14:04:34 +0000 (09:04 -0500)
R=lvd
CC=golang-dev
https://golang.org/cl/5500060

src/cmd/go/build.go

index a3b454f2277065cc664ee1c303fb84761a4e26a8..eae54c33f958c3b3f20c600fd1ceff3b5677dd91 100644 (file)
@@ -139,6 +139,7 @@ type builder struct {
        goos        string               // the $GOOS
        gobin       string               // the $GOBIN
        exe         string               // the executable suffix - "" or ".exe"
+       gcflags     []string             // additional flags for Go compiler
        actionCache map[cacheKey]*action // a cache of already-constructed actions
        mkdirCache  map[string]bool      // a cache of created directories
 
@@ -202,6 +203,7 @@ func (b *builder) init(aflag, nflag, xflag bool) {
        if b.goos == "windows" {
                b.exe = ".exe"
        }
+       b.gcflags = strings.Fields(os.Getenv("GCFLAGS"))
 
        b.arch, err = build.ArchChar(b.goarch)
        if err != nil {
@@ -836,6 +838,7 @@ func mkAbs(dir, f string) string {
 // to generate the named output file. 
 func (b *builder) gc(p *Package, ofile string, gcargs, importArgs []string, gofiles []string) error {
        args := []string{b.arch + "g", "-o", ofile}
+       args = append(args, b.gcflags...)
        args = append(args, gcargs...)
        args = append(args, importArgs...)
        for _, f := range gofiles {
@@ -890,7 +893,13 @@ func (b *builder) gccld(p *Package, out string, flags []string, obj []string) er
 // gccCmd returns a gcc command line ending with args
 func (b *builder) gccCmd(objdir string, flags []string, args ...string) []string {
        // TODO: HOST_CC?
-       a := []string{"gcc", "-I", objdir, "-g", "-fPIC", "-O2"}
+       a := []string{"gcc", "-I", objdir, "-g", "-O2"}
+
+       // Definitely want -fPIC but on Windows gcc complains
+       // "-fPIC ignored for target (all code is position independent)"
+       if b.goos != "windows" {
+               a = append(a, "-fPIC")
+       }
        switch b.arch {
        case "8":
                a = append(a, "-m32")