# Set up GOROOT_FINAL, GOARCH, GOOS if needed.
GOROOT_FINAL?=$(GOROOT)
+ifeq ($(GOHOSTOS),)
+GOHOSTOS:=$(shell uname | tr A-Z a-z | sed 's/mingw/windows/; s/.*windows.*/windows/')
+endif
+
ifeq ($(GOOS),)
-GOOS:=${shell uname | tr A-Z a-z | sed 's/mingw/windows/; s/windows.*/windows/'}
+GOOS:=$(GOHOSTOS)
endif
ifeq ($(GOOS),darwin)
$(error Invalid $$GOOS '$(GOOS)'; must be darwin, freebsd, linux, nacl, tiny, or windows)
endif
-ifeq ($(GOARCH),)
-ifeq ($(GOOS),darwin)
+ifeq ($(GOHOSTARCH),)
+ifeq ($(GOHOSTOS),darwin)
# Even on 64-bit platform, darwin uname -m prints i386.
# Check for amd64 with sysctl instead.
-GOARCH:=${shell if sysctl machdep.cpu.extfeatures | grep EM64T >/dev/null; then echo amd64; else uname -m | sed 's/i386/386/'; fi}
+GOHOSTARCH:=${shell if sysctl machdep.cpu.extfeatures | grep EM64T >/dev/null; then echo amd64; else uname -m | sed 's/i386/386/'; fi}
else
# Ask uname -m for the processor.
-GOARCH:=${shell uname -m | sed 's/^..86$$/386/; s/^.86$$/386/; s/x86_64/amd64/; s/arm.*/arm/'}
+GOHOSTARCH:=${shell uname -m | sed 's/^..86$$/386/; s/^.86$$/386/; s/x86_64/amd64/; s/arm.*/arm/'}
endif
endif
+ifeq ($(GOARCH),)
+GOARCH:=$(GOHOSTARCH)
+endif
+
ifeq ($(GOARCH),386)
O:=8
else ifeq ($(GOARCH),amd64)
endif
# Save for recursive make to avoid recomputing.
-export GOARCH GOOS
+export GOARCH GOOS GOHOSTARCH GOHOSTOS
# ugly hack to deal with whitespaces in $GOROOT
nullstring :=
go-env:
@echo export GOARCH=$(GOARCH)
@echo export GOOS=$(GOOS)
+ @echo export GOHOSTARCH=$(GOHOSTARCH)
+ @echo export GOHOSTOS=$(GOHOSTOS)
@echo export O=$O
@echo export AS="$(AS)"
@echo export CC="$(CC)"
gcc=gcc
fi
-# If this is a 64-bit machine, compile 64-bit versions of
-# the host tools, to match the native ptrace.
-case "`uname -m -p`" in
+# Build 64-bit binaries on 64-bit systems, unless GOHOSTARCH=386.
+case "$(uname -m -p)-$GOHOSTARCH" in
+*x86_64*-386 | *amd64*-386)
+ gcc="$gcc -m32"
+ ;;
*x86_64* | *amd64*)
gcc="$gcc -m64"
esac
-
# Run gcc, save error status, redisplay output without noise, exit with gcc status.
tmp=/tmp/qcc.$$.$USER.out
$gcc -Wall -Wno-sign-compare -Wno-missing-braces \