From afb49aada5b79b360d6c16699b0b8121ae6b2b71 Mon Sep 17 00:00:00 2001 From: Andrew Wilkins Date: Tue, 9 Apr 2013 07:35:06 +0800 Subject: [PATCH] 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 --- src/cmd/cgo/main.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/cmd/cgo/main.go b/src/cmd/cgo/main.go index ca370ef3f29dc..9bea97dbd900d 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