From: Andrew Wilkins Date: Mon, 8 Apr 2013 23:35:06 +0000 (+0800) Subject: cmd/cgo: record CGO_LDFLAGS env var in _cgo_flags X-Git-Tag: go1.1rc2~136 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=afb49aada5b79b360d6c16699b0b8121ae6b2b71;p=gostls13.git cmd/cgo: record CGO_LDFLAGS env var in _cgo_flags cgo stores cgo LDFLAGS in _cgo_flags and _cgo_defun.c. The _cgo_defun.c records the flags via "#pragma cgo_ldflag ", 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 --- diff --git a/src/cmd/cgo/main.go b/src/cmd/cgo/main.go index ca370ef3f2..9bea97dbd9 100644 --- a/src/cmd/cgo/main.go +++ b/src/cmd/cgo/main.go @@ -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