| [!cgo] skip |
| [short] skip |
| |
| cp x.go.txt x.go |
| |
| # Only allow //go:cgo_ldflag .* in cgo-generated code |
| [gc] cp x_gc.go.txt x.go |
| [gc] ! go build x |
| [gc] stderr '//go:cgo_ldflag .* only allowed in cgo-generated code' |
| |
| # Ignore _* files |
| rm x.go |
| ! go build . |
| stderr 'no Go files' |
| cp cgo_yy.go.txt _cgo_yy.go |
| ! go build . |
| stderr 'no Go files' #_* files are ignored... |
| |
| [gc] ! go build _cgo_yy.go # ... but if forced, the comment is rejected |
| # Actually, today there is a separate issue that _ files named |
| # on the command line are ignored. Once that is fixed, |
| # we want to see the cgo_ldflag error. |
| [gc] stderr '//go:cgo_ldflag only allowed in cgo-generated code|no Go files' |
| |
| rm _cgo_yy.go |
| |
| # Reject #cgo CFLAGS: -fplugin=foo.so |
| cp x.go.txt x.go |
| cp y_fplugin.go.txt y.go |
| ! go build x |
| stderr 'invalid flag in #cgo CFLAGS: -fplugin=foo.so' |
| |
| # Reject #cgo CFLAGS: -lbar -fplugin=foo.so |
| cp y_lbar_fplugin.go.txt y.go |
| ! go build x |
| stderr 'invalid flag in #cgo CFLAGS: -fplugin=foo.so' |
| |
| # Reject #cgo pkg-config: -foo |
| cp y_pkgconfig_dash_foo.txt y.go |
| ! go build x |
| stderr 'invalid pkg-config package name: -foo' |
| |
| # Reject #cgo pkg-config: @foo |
| cp y_pkgconfig_at_foo.txt y.go |
| ! go build x |
| stderr 'invalid pkg-config package name: @foo' |
| |
| # Reject #cgo CFLAGS: @foo |
| cp y_cflags_at_foo.txt y.go |
| ! go build x |
| stderr 'invalid flag in #cgo CFLAGS: @foo' |
| |
| # Reject #cgo CFLAGS: -D |
| cp y_cflags_dash_d.txt y.go |
| ! go build x |
| stderr 'invalid flag in #cgo CFLAGS: -D without argument' |
| |
| # Note that -I @foo is allowed because we rewrite it into -I /path/to/src/@foo |
| # before the check is applied. There's no such rewrite for -D. |
| |
| # Reject #cgo CFLAGS: -D @foo |
| cp y_cflags_dash_d_space_at_foo.txt y.go |
| ! go build x |
| stderr 'invalid flag in #cgo CFLAGS: -D @foo' |
| |
| # Reject #cgo CFLAGS -D@foo |
| cp y_cflags_dash_d_at_foo.txt y.go |
| ! go build x |
| stderr 'invalid flag in #cgo CFLAGS: -D@foo' |
| |
| # Check for CFLAGS in commands |
| env CGO_CFLAGS=-D@foo |
| cp y_no_cflags.txt y.go |
| go build -n x |
| stderr '-D@foo' |
| |
| -- go.mod -- |
| module x |
| |
| go 1.16 |
| -- x_gc.go.txt -- |
| package x |
| |
| //go:cgo_ldflag "-fplugin=foo.so" |
| |
| import "C" |
| -- cgo_yy.go.txt -- |
| package x |
| |
| //go:cgo_ldflag "-fplugin=foo.so" |
| |
| import "C" |
| -- x.go.txt -- |
| package x |
| -- y_fplugin.go.txt -- |
| package x |
| // #cgo CFLAGS: -fplugin=foo.so |
| import "C" |
| -- y_lbar_fplugin.go.txt -- |
| package x |
| // #cgo CFLAGS: -Ibar -fplugin=foo.so |
| import "C" |
| -- y_pkgconfig_dash_foo.txt -- |
| package x |
| // #cgo pkg-config: -foo |
| import "C" |
| -- y_pkgconfig_at_foo.txt -- |
| package x |
| // #cgo pkg-config: @foo |
| import "C" |
| -- y_cflags_at_foo.txt -- |
| package x |
| // #cgo CFLAGS: @foo |
| import "C" |
| -- y_cflags_dash_d.txt -- |
| package x |
| // #cgo CFLAGS: -D |
| import "C" |
| -- y_cflags_dash_d_space_at_foo.txt -- |
| package x |
| // #cgo CFLAGS: -D @foo |
| import "C" |
| -- y_cflags_dash_d_at_foo.txt -- |
| package x |
| // #cgo CFLAGS: -D@foo |
| import "C" |
| -- y_no_cflags.txt -- |
| package x |
| import "C" |