HOST_LDFLAGS=$(HOST_EXTRA_LDFLAGS)
PWD=$(shell pwd)
+# Decide whether use of cgo is okay.
+ifeq ($(CGO_ENABLED),)
+# Default on...
+CGO_ENABLED:=1
+ifeq ($(GOARCH),arm) # ... but not on ARM
+CGO_ENABLED:=0
+endif
+ifeq ($(GOOS),plan9) # ... and not on Plan 9
+CGO_ENABLED:=0
+endif
+ifeq ($(GOOS),openbsd) # ... and not on OpenBSD
+CGO_ENABLED:=0
+endif
+endif
+
# Make environment more standard.
LANG:=
LC_ALL:=C
export LANG LC_ALL LC_CTYPE GREP_OPTIONS GREP_COLORS
go-env:
- @echo export GOARCH=$(GOARCH)
- @echo export GOOS=$(GOOS)
- @echo export GOHOSTARCH=$(GOHOSTARCH)
- @echo export GOHOSTOS=$(GOHOSTOS)
- @echo export O=$O
+ @echo export GOARCH="$(GOARCH)"
+ @echo export GOOS="$(GOOS)"
+ @echo export GOHOSTARCH="$(GOHOSTARCH)"
+ @echo export GOHOSTOS="$(GOHOSTOS)"
+ @echo export CGO_ENABLED="$(CGO_ENABLED)"
+ @echo export O="$O"
@echo export AS="$(AS)"
@echo export CC="$(CC)"
@echo export GC="$(GC)"
sendfile_stub.go\
sock_bsd.go\
+ifeq ($(CGO_ENABLED),1)
CGOFILES_freebsd=\
cgo_bsd.go\
- cgo_unix.go\
+ cgo_unix.go
+else
+GOFILES_freebsd+=cgo_stub.go
+endif
GOFILES_darwin=\
dnsclient_unix.go\
sendfile_stub.go\
sock_bsd.go\
+ifeq ($(CGO_ENABLED),1)
CGOFILES_darwin=\
cgo_bsd.go\
- cgo_unix.go\
+ cgo_unix.go
+else
+GOFILES_darwin+=cgo_stub.go
+endif
GOFILES_linux=\
dnsclient_unix.go\
sendfile_linux.go\
sock_linux.go\
+ifeq ($(CGO_ENABLED),1)
+CGOFILES_linux=\
+ cgo_linux.go\
+ cgo_unix.go
+else
+GOFILES_linux+=cgo_stub.go
+endif
+
GOFILES_openbsd=\
dnsclient.go\
dnsconfig.go\
lookup_unix.go\
sendfile_stub.go\
-ifeq ($(GOARCH),arm)
-# ARM has no cgo, so use the stubs.
-GOFILES_linux+=cgo_stub.go
-else
-CGOFILES_linux=\
- cgo_linux.go\
- cgo_unix.go
-endif
-
GOFILES_windows=\
file_windows.go\
interface_windows.go\
GOFILES=\
user.go\
-ifneq ($(GOARCH),arm)
+ifeq ($(CGO_ENABLED),1)
CGOFILES_linux=\
lookup_unix.go
CGOFILES_freebsd=\
*/
import "C"
+func init() {
+ implemented = true
+}
+
// Lookup looks up a user by username. If the user cannot be found,
// the returned error is of type UnknownUserError.
func Lookup(username string) (*User, os.Error) {
"strconv"
)
+var implemented = false // set to true by lookup_unix.go's init
+
// User represents a user account.
type User struct {
Uid int // user id
)
func skip(t *testing.T) bool {
- if runtime.GOARCH == "arm" {
- t.Logf("user: cgo not implemented on arm; skipping tests")
+ if !implemented {
+ t.Logf("user: not implemented; skipping tests")
return true
}
include ../../../Make.inc
-ENABLED:=1
-
-ifeq ($(GOARCH),arm)
-ENABLED:=0
-endif
-
-ifeq ($(GOOS),plan9)
-ENABLED:=0
-endif
-ifeq ($(GOOS),openbsd)
-ENABLED:=0
-endif
-
-ifeq ($(DISABLE_CGO),1)
-ENABLED:=0
-endif
-
TARG=runtime/cgo
GOFILES=\
cgo.go\
-ifeq ($(ENABLED),1)
+ifeq ($(CGO_ENABLED),1)
# Unwarranted chumminess with Make.pkg's cgo rules.
# Do not try this at home.
include ../../../Make.pkg
-ifeq ($(ENABLED),1)
+ifeq ($(CGO_ENABLED),1)
_cgo_defun.c:
echo >$@
time gomake test
) || exit $?
-[ "$GOARCH" == arm ] ||
+[ "$CGO_ENABLED" != 1 ] ||
[ "$GOHOSTOS" == windows ] ||
(xcd ../misc/cgo/stdio
gomake clean
./test.bash
) || exit $?
-[ "$GOARCH" == arm ] ||
+[ "$CGO_ENABLED" != 1 ] ||
(xcd ../misc/cgo/life
gomake clean
./test.bash
) || exit $?
-[ "$GOARCH" == arm ] ||
+[ "$CGO_ENABLED" != 1 ] ||
[ "$GOHOSTOS" == windows ] ||
(xcd ../misc/cgo/test
gomake clean