diff options
Diffstat (limited to 'src/Make.inc')
-rw-r--r-- | src/Make.inc | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/src/Make.inc b/src/Make.inc new file mode 100644 index 000000000..2889c7edf --- /dev/null +++ b/src/Make.inc @@ -0,0 +1,146 @@ +# 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. + +# Makefile included by all other Go makefiles. + +# Clear variables that must come from Makefiles, +# not the environment. +LIB:= +TARG:= +GOFILES:= +HFILES:= +OFILES:= +YFILES:= + +# GOROOT must be set. +ifeq ($(GOROOT),) +$(error $$GOROOT is not set; use gomake or set $$GOROOT in your environment) +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:=$(GOHOSTOS) +endif + +ifeq ($(GOOS),darwin) +else ifeq ($(GOOS),freebsd) +else ifeq ($(GOOS),linux) +else ifeq ($(GOOS),tiny) +else ifeq ($(GOOS),plan9) +else ifeq ($(GOOS),windows) +else +$(error Invalid $$GOOS '$(GOOS)'; must be darwin, freebsd, linux, plan9, tiny, or windows) +endif + +ifeq ($(GOHOSTARCH),) +ifeq ($(GOHOSTOS),darwin) +# Even on 64-bit platform, darwin uname -m prints i386. +# Check for amd64 with sysctl instead. +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. +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 + +# darwin requires GOHOSTARCH match GOARCH +ifeq ($(GOOS),darwin) +GOHOSTARCH:=$(GOARCH) +endif + +ifeq ($(GOARCH),386) +O:=8 +else ifeq ($(GOARCH),amd64) +O:=6 +else ifeq ($(GOARCH),arm) + +O:=5 +ifeq ($(GOOS),linux) +else +$(error Invalid $$GOOS '$(GOOS)' for GOARCH=arm; must be linux) +endif + +else +$(error Invalid $$GOARCH '$(GOARCH)'; must be 386, amd64, or arm) +endif + +# Save for recursive make to avoid recomputing. +export GOARCH GOOS GOHOSTARCH GOHOSTOS + +# ugly hack to deal with whitespaces in $GOROOT +nullstring := +space := $(nullstring) # a space at the end +QUOTED_GOROOT:=$(subst $(space),\ ,$(GOROOT)) + +# default GOBIN +ifndef GOBIN +GOBIN=$(QUOTED_GOROOT)/bin +endif +QUOTED_GOBIN=$(subst $(space),\ ,$(GOBIN)) + +AS=${O}a +CC=${O}c +GC=${O}g +LD=${O}l +OS=568vq +CFLAGS=-FVw + +HOST_CC=quietgcc +HOST_LD=quietgcc +HOST_O=o +HOST_YFLAGS=-d +HOST_AR?=ar + +# These two variables can be overridden in the environment +# to build with other flags. They are like $CFLAGS and $LDFLAGS +# in a more typical GNU build. We are more explicit about the names +# here because there are different compilers being run during the +# build (both gcc and 6c, for example). +HOST_EXTRA_CFLAGS?=-ggdb -O2 +HOST_EXTRA_LDFLAGS?= + +HOST_CFLAGS=-I"$(GOROOT)/include" $(HOST_EXTRA_CFLAGS) +HOST_LDFLAGS=$(HOST_EXTRA_LDFLAGS) +PWD=$(shell pwd) + +# Make environment more standard. +LANG:= +LC_ALL:=C +LC_CTYPE:=C +GREP_OPTIONS:= +GREP_COLORS:= +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)" + @echo export GC="$(GC)" + @echo export LD="$(LD)" + @echo export OS="$(OS)" + @echo export CFLAGS="$(CFLAGS)" + @echo export LANG="$(LANG)" + @echo export LC_ALL="$(LC_ALL)" + @echo export LC_CTYPE="$(LC_CTYPE)" + @echo export GREP_OPTIONS="$(GREP_OPTIONS)" + @echo export GREP_COLORS="$(GREP_COLORS)" + @echo MAKE_GO_ENV_WORKED=1 + +# Don't let the targets in this file be used +# as the default make target. +.DEFAULT_GOAL:= |