diff options
author | Andrew Gerrand <adg@golang.org> | 2010-10-08 18:52:28 +1100 |
---|---|---|
committer | Andrew Gerrand <adg@golang.org> | 2010-10-08 18:52:28 +1100 |
commit | e088780c439b97ad532ab0bf224b38f98a220da9 (patch) | |
tree | b9ead85d1468cc7af2d713b8c3e42a62a523c266 /src/Make.inc | |
parent | f6faa261b0944f29ed8f715250d373df3bf1a0e4 (diff) | |
download | go-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.inc | 22 |
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)" |