summaryrefslogtreecommitdiff
path: root/src/Make.inc
diff options
context:
space:
mode:
authorAndrew Gerrand <adg@golang.org>2010-10-08 18:52:28 +1100
committerAndrew Gerrand <adg@golang.org>2010-10-08 18:52:28 +1100
commite088780c439b97ad532ab0bf224b38f98a220da9 (patch)
treeb9ead85d1468cc7af2d713b8c3e42a62a523c266 /src/Make.inc
parentf6faa261b0944f29ed8f715250d373df3bf1a0e4 (diff)
downloadgo-e088780c439b97ad532ab0bf224b38f98a220da9.tar.gz
build: add GOHOSTOS and GOHOSTARCH environment variables.
Auto-detect both if not set, and if GOARCH is not set use GOHOSTARCH. GOHOSTARCH is used to set the -m32 or -m64 flags for gcc. This is so that 64-bit can build binaries that run on 32-bit systems. R=rsc, iant, brainman CC=golang-dev http://codereview.appspot.com/2342045 Committer: Andrew Gerrand <adg@golang.org>
Diffstat (limited to 'src/Make.inc')
-rw-r--r--src/Make.inc22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/Make.inc b/src/Make.inc
index 858cb3a68..254140e03 100644
--- a/src/Make.inc
+++ b/src/Make.inc
@@ -21,8 +21,12 @@ endif
# 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)
@@ -35,17 +39,21 @@ else
$(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)
@@ -63,7 +71,7 @@ $(error Invalid $$GOARCH '$(GOARCH)'; must be 386, amd64, or arm)
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 :=
@@ -101,6 +109,8 @@ 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 AS="$(AS)"
@echo export CC="$(CC)"