1# Makefile for gotools 2# Copyright 2015 Free Software Foundation, Inc. 3# 4# This file is free software; you can redistribute it and/or modify 5# it under the terms of the GNU General Public License as published by 6# the Free Software Foundation; either version 3 of the License, or 7# (at your option) any later version. 8# 9# This program is distributed in the hope that it will be useful, 10# but WITHOUT ANY WARRANTY; without even the implied warranty of 11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12# GNU General Public License for more details. 13# 14# You should have received a copy of the GNU General Public License 15# along with this program; see the file COPYING3. If not see 16# <http://www.gnu.org/licenses/>. 17 18ACLOCAL_AMFLAGS = -I ./config -I ../config 19 20gcc_version := $(shell $(GCC_FOR_TARGET) -dumpversion) 21 22libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) 23 24mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs 25PWD_COMMAND = $${PWDCMD-pwd} 26STAMP = echo timestamp > 27 28libgodir = ../$(target_noncanonical)/libgo 29LIBGODEP = $(libgodir)/libgo.la 30 31if NATIVE 32# Use the compiler we just built. 33GOCOMPILER = $(GOC_FOR_TARGET) 34else 35GOCOMPILER = $(GOC) 36endif 37 38GOCFLAGS = $(CFLAGS_FOR_TARGET) 39GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS) 40 41AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs 42GOLINK = $(GOCOMPILER) $(GOCFLAGS) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@ 43 44cmdsrcdir = $(srcdir)/../libgo/go/cmd 45 46go_cmd_go_files = \ 47 $(cmdsrcdir)/go/build.go \ 48 $(cmdsrcdir)/go/clean.go \ 49 $(cmdsrcdir)/go/context.go \ 50 $(cmdsrcdir)/go/discovery.go \ 51 $(cmdsrcdir)/go/env.go \ 52 $(cmdsrcdir)/go/fix.go \ 53 $(cmdsrcdir)/go/fmt.go \ 54 $(cmdsrcdir)/go/generate.go \ 55 $(cmdsrcdir)/go/get.go \ 56 $(cmdsrcdir)/go/go11.go \ 57 $(cmdsrcdir)/go/help.go \ 58 $(cmdsrcdir)/go/http.go \ 59 $(cmdsrcdir)/go/list.go \ 60 $(cmdsrcdir)/go/main.go \ 61 $(cmdsrcdir)/go/pkg.go \ 62 $(cmdsrcdir)/go/run.go \ 63 $(cmdsrcdir)/go/signal.go \ 64 $(cmdsrcdir)/go/signal_unix.go \ 65 $(cmdsrcdir)/go/test.go \ 66 $(cmdsrcdir)/go/testflag.go \ 67 $(cmdsrcdir)/go/tool.go \ 68 $(cmdsrcdir)/go/vcs.go \ 69 $(cmdsrcdir)/go/version.go \ 70 $(cmdsrcdir)/go/vet.go \ 71 $(libgodir)/zstdpkglist.go 72 73go_cmd_gofmt_files = \ 74 $(cmdsrcdir)/gofmt/doc.go \ 75 $(cmdsrcdir)/gofmt/gofmt.go \ 76 $(cmdsrcdir)/gofmt/rewrite.go \ 77 $(cmdsrcdir)/gofmt/simplify.go 78 79go_cmd_cgo_files = \ 80 $(cmdsrcdir)/cgo/ast.go \ 81 $(cmdsrcdir)/cgo/doc.go \ 82 $(cmdsrcdir)/cgo/gcc.go \ 83 $(cmdsrcdir)/cgo/godefs.go \ 84 $(cmdsrcdir)/cgo/main.go \ 85 $(cmdsrcdir)/cgo/out.go \ 86 $(cmdsrcdir)/cgo/util.go 87 88GCCGO_INSTALL_NAME := $(shell echo gccgo|sed '$(program_transform_name)') 89GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)') 90GXX_INSTALL_NAME := $(shell echo g++|sed '$(program_transform_name)') 91 92zdefaultcc.go: s-zdefaultcc; @true 93s-zdefaultcc: Makefile 94 echo 'package main' > zdefaultcc.go.tmp 95 echo 'const defaultGCCGO = "$(bindir)/$(GCCGO_INSTALL_NAME)"' >> zdefaultcc.go.tmp 96 echo 'const defaultCC = "$(bindir)/$(GCC_INSTALL_NAME)"' >> zdefaultcc.go.tmp 97 echo 'const defaultCXX = "$(bindir)/$(GXX_INSTALL_NAME)"' >> zdefaultcc.go.tmp 98 $(SHELL) $(srcdir)/../move-if-change zdefaultcc.go.tmp zdefaultcc.go 99 $(STAMP) $@ 100 101MOSTLYCLEANFILES = zdefaultcc.go s-zdefaultcc 102 103if NATIVE 104 105# For a native build we build the programs using the newly built libgo 106# and install them as regular programs. 107 108bin_PROGRAMS = go$(EXEEXT) gofmt$(EXEEXT) 109noinst_PROGRAMS = cgo$(EXEEXT) 110man_MANS = go.1 gofmt.1 111 112go$(EXEEXT): $(go_cmd_go_files) zdefaultcc.go $(LIBGODEP) 113 $(GOLINK) $(go_cmd_go_files) zdefaultcc.go $(LIBS) $(NET_LIBS) 114gofmt$(EXEEXT): $(go_cmd_gofmt_files) $(LIBGODEP) 115 $(GOLINK) $(go_cmd_gofmt_files) $(LIBS) $(NET_LIBS) 116cgo$(EXEEXT): $(go_cmd_cgo_files) zdefaultcc.go $(LIBGODEP) 117 $(GOLINK) $(go_cmd_cgo_files) zdefaultcc.go $(LIBS) $(NET_LIBS) 118 119install-exec-local: cgo$(EXEEXT) 120 $(MKDIR_P) $(DESTDIR)$(libexecsubdir) 121 rm -f $(DESTDIR)$(libexecsubdir)/cgo$(exeext) 122 $(INSTALL_PROGRAM) cgo$(exeext) $(DESTDIR)$(libexecsubdir)/cgo$(exeext) 123 124uninstall-local: 125 rm -f $(DESTDIR)$(libexecsubdir)/cgo$(exeext) 126 127else 128 129# For a non-native build we have to build the programs using a 130# previously built host (or build -> host) Go compiler. We should 131# only do this if such a compiler is available. We also need to get 132# the right values for GOARCH and GOOS in the default build context in 133# the go/build package. Figure this out later. 134 135endif 136