]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/cgo: record CGO_LDFLAGS env var in _cgo_flags
authorAndrew Wilkins <axwalk@gmail.com>
Mon, 8 Apr 2013 23:35:06 +0000 (07:35 +0800)
committerShenghou Ma <minux.ma@gmail.com>
Mon, 8 Apr 2013 23:35:06 +0000 (07:35 +0800)
cgo stores cgo LDFLAGS in _cgo_flags and _cgo_defun.c.
The _cgo_defun.c records the flags via
"#pragma cgo_ldflag <flag>", which external linking
relies upon for passing libraries (and search paths)
to the host linker.

The go command will allow LDFLAGS for cgo to be passed
through the environment (CGO_LDFLAGS); cgo ignores
this environment variable, and so its value doesn't
make it into the above mentioned files. This CL changes
cgo to record CGO_LDFLAGS also.

Fixes #5205.

R=iant, minux.ma
CC=golang-dev
https://golang.org/cl/8465043

src/cmd/cgo/main.go

index ca370ef3f29dc42bc7b3531c77367d039a88c27a..9bea97dbd900d1691ab6f0817109d120bdafd832 100644 (file)
@@ -208,6 +208,15 @@ func main() {
 
        p := newPackage(args[:i])
 
+       // Record CGO_LDFLAGS from the environment for external linking.
+       if ldflags := os.Getenv("CGO_LDFLAGS"); ldflags != "" {
+               args, err := splitQuoted(ldflags)
+               if err != nil {
+                       fatalf("bad CGO_LDFLAGS: %q (%s)", ldflags, err)
+               }
+               p.addToFlag("LDFLAGS", args)
+       }
+
        // Need a unique prefix for the global C symbols that
        // we use to coordinate between gcc and ourselves.
        // We already put _cgo_ at the beginning, so the main