misc/cgo: re-enable some tests The testso directory still needs to be enabled. R=golang-dev, r CC=golang-dev https://golang.org/cl/5731048
diff --git a/misc/cgo/gmp/Makefile b/misc/cgo/gmp/Makefile deleted file mode 100644 index d9390c1..0000000 --- a/misc/cgo/gmp/Makefile +++ /dev/null
@@ -1,38 +0,0 @@ -# Copyright 2009 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -include ../../../src/Make.inc - -TARG=gmp - -# Can have plain GOFILES too, but this example doesn't. - -CGOFILES=\ - gmp.go - -CGO_LDFLAGS=-lgmp - -# To add flags necessary for locating the library or its include files, -# set CGO_CFLAGS or CGO_LDFLAGS. For example, to use an -# alternate installation of the library: -# CGO_CFLAGS=-I/home/rsc/gmp32/include -# CGO_LDFLAGS+=-L/home/rsc/gmp32/lib -# Note the += on the second line. - -CLEANFILES+=pi fib - -include ../../../src/Make.pkg - -# Simple test programs - -# Computes 1000 digits of pi; single-threaded. -pi: install pi.go - $(GC) $(GCFLAGS) $(GCIMPORTS) pi.go - $(LD) -o $@ pi.$O - -# Computes 200 Fibonacci numbers; multi-threaded. -fib: install fib.go - $(GC) $(GCFLAGS) $(GCIMPORTS) fib.go - $(LD) -o $@ fib.$O -
diff --git a/misc/cgo/gmp/fib.go b/misc/cgo/gmp/fib.go index 3eda39e..18434be 100644 --- a/misc/cgo/gmp/fib.go +++ b/misc/cgo/gmp/fib.go
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + // Compute Fibonacci numbers with two goroutines // that pass integers back and forth. No actual // concurrency, just threads and synchronization @@ -10,7 +12,7 @@ package main import ( - big "gmp" + big "." "runtime" )
diff --git a/misc/cgo/gmp/pi.go b/misc/cgo/gmp/pi.go index 3e40624..019861e 100644 --- a/misc/cgo/gmp/pi.go +++ b/misc/cgo/gmp/pi.go
@@ -1,3 +1,5 @@ +// +build ignore + /* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -38,8 +40,8 @@ package main import ( + big "." "fmt" - big "gmp" "runtime" )
diff --git a/misc/cgo/life/Makefile b/misc/cgo/life/Makefile deleted file mode 100644 index 1568a67..0000000 --- a/misc/cgo/life/Makefile +++ /dev/null
@@ -1,35 +0,0 @@ -# Copyright 2010 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -include ../../../src/Make.inc - -TARG=life - -CGOFILES=\ - life.go\ - -CGO_OFILES=\ - c-life.o\ - -ifeq ($(GOOS),windows) -ifeq ($(GOARCH),amd64) -CGO_OFILES+=\ - lib64_libmingwex_a-wassert.o\ - lib64_libmingw32_a-mingw_helpers.o\ - -lib64_libmingwex_a-wassert.o: - ar -x /mingw/x86_64-w64-mingw32/lib/libmingwex.a lib64_libmingwex_a-wassert.o - -lib64_libmingw32_a-mingw_helpers.o: - ar -x /mingw/x86_64-w64-mingw32/lib/libmingw32.a lib64_libmingw32_a-mingw_helpers.o -endif -endif - -CLEANFILES+=life - -include ../../../src/Make.pkg - -life: install main.go - $(GC) $(GCFLAGS) $(GCIMPORTS) main.go - $(LD) -o $@ main.$O
diff --git a/misc/cgo/life/main.go b/misc/cgo/life/main.go index 9cfed43..47ae0e1 100644 --- a/misc/cgo/life/main.go +++ b/misc/cgo/life/main.go
@@ -2,14 +2,16 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + // Run the game of life in C using Go for parallelization. package main import ( + "." "flag" "fmt" - "life" ) const MAXDIM = 100
diff --git a/misc/cgo/life/test.bash b/misc/cgo/life/test.bash index 5c5fba1..bb48352 100755 --- a/misc/cgo/life/test.bash +++ b/misc/cgo/life/test.bash
@@ -4,8 +4,11 @@ # license that can be found in the LICENSE file. set -e -gomake life +go build -o life main.go + echo '*' life >run.out ./life >>run.out diff run.out golden.out -gomake clean + +rm -f life +
diff --git a/misc/cgo/stdio/Makefile b/misc/cgo/stdio/Makefile deleted file mode 100644 index 586132b..0000000 --- a/misc/cgo/stdio/Makefile +++ /dev/null
@@ -1,17 +0,0 @@ -# Copyright 2009 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -include ../../../src/Make.inc - -TARG=stdio -CGOFILES=\ - file.go\ - -CLEANFILES+=hello fib chain run.out - -include ../../../src/Make.pkg - -%: install %.go - $(GC) $(GCFLAGS) $(GCIMPORTS) $*.go - $(LD) -o $@ $*.$O
diff --git a/misc/cgo/stdio/chain.go b/misc/cgo/stdio/chain.go index c188b2d..1cf0b1f 100644 --- a/misc/cgo/stdio/chain.go +++ b/misc/cgo/stdio/chain.go
@@ -2,13 +2,15 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + // Pass numbers along a chain of threads. package main import ( + "../stdio" "runtime" - "stdio" "strconv" )
diff --git a/misc/cgo/stdio/fib.go b/misc/cgo/stdio/fib.go index 431d9ce..6d3ccfd 100644 --- a/misc/cgo/stdio/fib.go +++ b/misc/cgo/stdio/fib.go
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + // Compute Fibonacci numbers with two goroutines // that pass integers back and forth. No actual // concurrency, just threads and synchronization @@ -10,8 +12,8 @@ package main import ( + "../stdio" "runtime" - "stdio" "strconv" )
diff --git a/misc/cgo/stdio/file.go b/misc/cgo/stdio/file.go index ab1e884..6e7d479 100644 --- a/misc/cgo/stdio/file.go +++ b/misc/cgo/stdio/file.go
@@ -28,7 +28,7 @@ // Test reference to library symbol. // Stdout and stderr are too special to be a reliable test. -var myerr = C.sys_errlist +//var = C.environ func (f *File) WriteString(s string) { p := C.CString(s)
diff --git a/misc/cgo/stdio/hello.go b/misc/cgo/stdio/hello.go index 58fc6d5..4ab3c74 100644 --- a/misc/cgo/stdio/hello.go +++ b/misc/cgo/stdio/hello.go
@@ -2,9 +2,11 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build ignore + package main -import "stdio" +import "../stdio" func main() { stdio.Stdout.WriteString(stdio.Greeting + "\n")
diff --git a/misc/cgo/stdio/test.bash b/misc/cgo/stdio/test.bash index 82e3f7b..21829fa 100755 --- a/misc/cgo/stdio/test.bash +++ b/misc/cgo/stdio/test.bash
@@ -4,7 +4,10 @@ # license that can be found in the LICENSE file. set -e -gomake hello fib chain +go build hello.go +go build fib.go +go build chain.go + echo '*' hello >run.out ./hello >>run.out echo '*' fib >>run.out @@ -12,4 +15,6 @@ echo '*' chain >>run.out ./chain >>run.out diff run.out golden.out -gomake clean + +rm -f hello fib chain +
diff --git a/misc/cgo/test/basic.go b/misc/cgo/test/basic.go index cd6d881..70ec5e4 100644 --- a/misc/cgo/test/basic.go +++ b/misc/cgo/test/basic.go
@@ -55,7 +55,7 @@ */ import "C" import ( - "os" + "syscall" "testing" "unsafe" ) @@ -110,7 +110,7 @@ C.fclose(f) t.Fatalf("C.fopen: should fail") } - if err != os.ENOENT { + if err != syscall.ENOENT { t.Fatalf("C.fopen: unexpected error: %v", err) } }
diff --git a/misc/cgo/test/callback.go b/misc/cgo/test/callback.go index ef85256..e6a1462 100644 --- a/misc/cgo/test/callback.go +++ b/misc/cgo/test/callback.go
@@ -6,14 +6,12 @@ /* void callback(void *f); -void callGoFoo(void) { - extern void goFoo(void); - goFoo(); -} +void callGoFoo(void); */ import "C" import ( + "./backdoor" "runtime" "testing" "unsafe" @@ -43,7 +41,7 @@ nestedCall(runtime.GC) } -func lockedOSThread() bool // in runtime.c +var lockedOSThread = backdoor.LockedOSThread func testCallbackPanic(t *testing.T) { // Make sure panic during callback unwinds properly.
diff --git a/misc/cgo/test/callback_c.c b/misc/cgo/test/callback_c.c index c296d70..47f0730 100644 --- a/misc/cgo/test/callback_c.c +++ b/misc/cgo/test/callback_c.c
@@ -15,3 +15,23 @@ goCallback(f); data[sizeof(data)-1] = 0; } + +void +callGoFoo(void) +{ + extern void goFoo(void); + goFoo(); +} + +void +IntoC(void) +{ + BackIntoGo(); +} + +void +twoSleep(int n) +{ + BackgroundSleep(n); + sleep(n); +}
diff --git a/misc/cgo/test/issue1328.go b/misc/cgo/test/issue1328.go index e01207d..e1796d6 100644 --- a/misc/cgo/test/issue1328.go +++ b/misc/cgo/test/issue1328.go
@@ -7,7 +7,7 @@ import "testing" // extern void BackIntoGo(void); -// void IntoC() { BackIntoGo(); } +// void IntoC(void); import "C" //export BackIntoGo
diff --git a/misc/cgo/test/issue1560.go b/misc/cgo/test/issue1560.go index 833b14a..3faa966 100644 --- a/misc/cgo/test/issue1560.go +++ b/misc/cgo/test/issue1560.go
@@ -10,10 +10,7 @@ unsigned int sleep(unsigned int seconds); extern void BackgroundSleep(int); -void twoSleep(int n) { - BackgroundSleep(n); - sleep(n); -} +void twoSleep(int); */ import "C"
diff --git a/src/cmd/dist/build.c b/src/cmd/dist/build.c index acd7347..6bcc0f5 100644 --- a/src/cmd/dist/build.c +++ b/src/cmd/dist/build.c
@@ -52,6 +52,19 @@ "windows", }; +// The known cgo-enabled combinations. +// This list is also known to ../../pkg/go/build/build.go. +static char *okcgo[] = { + "darwin/386", + "darwin/amd64", + "linux/386", + "linux/amd64", + "freebsd/386", + "freebsd/amd64", + "windows/386", + "windows/amd64", +}; + static void rmworkdir(void); // find reports the first index of p in l[0:n], or else -1. @@ -1308,6 +1321,11 @@ xprintf(format, "GOTOOLDIR", tooldir); xprintf(format, "GOCHAR", gochar); + if(find(bprintf(&b, "%s/%s", goos, goarch), okcgo, nelem(okcgo))) + xprintf(format, "CGO_ENABLED", "1"); + else + xprintf(format, "CGO_ENABLED", "0"); + if(pflag) { sep = ":"; if(streq(gohostos, "windows"))
diff --git a/src/pkg/go/build/build.go b/src/pkg/go/build/build.go index d986f80..7f7bd18 100644 --- a/src/pkg/go/build/build.go +++ b/src/pkg/go/build/build.go
@@ -210,6 +210,7 @@ // if set, or else the compiled code's GOARCH, GOOS, and GOROOT. var Default Context = defaultContext() +// This list is also known to ../../../cmd/dist/build.c. var cgoEnabled = map[string]bool{ "darwin/386": true, "darwin/amd64": true,
diff --git a/src/run.bash b/src/run.bash index 7b185486..b5ffaa9 100755 --- a/src/run.bash +++ b/src/run.bash
@@ -35,32 +35,26 @@ xcd() { echo - echo --- cd $1 + echo '#' $1 builtin cd "$GOROOT"/src/$1 } BROKEN=true -$BROKEN || [ "$CGO_ENABLED" != 1 ] || [ "$GOHOSTOS" == windows ] || (xcd ../misc/cgo/stdio -"$GOMAKE" clean ./test.bash ) || exit $? -$BROKEN || [ "$CGO_ENABLED" != 1 ] || (xcd ../misc/cgo/life -"$GOMAKE" clean ./test.bash ) || exit $? -$BROKEN || [ "$CGO_ENABLED" != 1 ] || (xcd ../misc/cgo/test -"$GOMAKE" clean -gotest +go test ) || exit $? $BROKEN ||