mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
2f55f4aa6c
Several recent changes to the gc version of cmd/go improve the gofrontend support. These changes are partially copies of existing gofrontend differences, and partially new code. This CL makes the gofrontend match the upstream code. The changes included here come from: https://golang.org/cl/111575 https://golang.org/cl/111595 https://golang.org/cl/111635 https://golang.org/cl/111636 For the record, the following recent gc changes are based on code already present in the gofrontend repo: https://golang.org/cl/110915 https://golang.org/cl/111615 For the record, a gc change, partially based on earlier gofrontend work, also with new gc code, was already copied to gofrontend repo in CL 111099: https://golang.org/cl/111097 This moves the generated list of standard library packages from cmd/go/internal/load to go/build. Reviewed-on: https://go-review.googlesource.com/112475 gotools/: * Makefile.am (check-go-tool): Don't copy zstdpkglist.go. * Makefile.in: Rebuild. From-SVN: r260097
352 lines
16 KiB
Makefile
352 lines
16 KiB
Makefile
# Makefile for gotools
|
|
# Copyright (C) 2015-2016 Free Software Foundation, Inc.
|
|
#
|
|
# This file is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; see the file COPYING3. If not see
|
|
# <http://www.gnu.org/licenses/>.
|
|
|
|
ACLOCAL_AMFLAGS = -I ./config -I ../config
|
|
|
|
gcc_version := $(shell $(GCC_FOR_TARGET) -dumpversion)
|
|
|
|
libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
|
|
|
|
mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
|
|
PWD_COMMAND = $${PWDCMD-pwd}
|
|
STAMP = echo timestamp >
|
|
|
|
libgodir = ../$(target_noncanonical)/libgo
|
|
LIBGODEP = $(libgodir)/libgo.la
|
|
|
|
LIBGOTOOL = $(libgodir)/libgotool.a
|
|
|
|
if NATIVE
|
|
# Use the compiler we just built.
|
|
GOCOMPILER = $(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET)
|
|
else
|
|
GOCOMPILER = $(GOC)
|
|
endif
|
|
|
|
GOCFLAGS = $(CFLAGS_FOR_TARGET)
|
|
GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
|
|
|
|
AM_GOCFLAGS = -I $(libgodir)
|
|
AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
|
|
GOLINK = $(GOCOMPILER) $(GOCFLAGS) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
|
|
|
|
libgosrcdir = $(srcdir)/../libgo/go
|
|
cmdsrcdir = $(libgosrcdir)/cmd
|
|
libgomiscdir = $(srcdir)/../libgo/misc
|
|
|
|
go_cmd_go_files = \
|
|
$(cmdsrcdir)/go/alldocs.go \
|
|
$(cmdsrcdir)/go/go11.go \
|
|
$(cmdsrcdir)/go/main.go
|
|
|
|
go_cmd_gofmt_files = \
|
|
$(cmdsrcdir)/gofmt/doc.go \
|
|
$(cmdsrcdir)/gofmt/gofmt.go \
|
|
$(cmdsrcdir)/gofmt/internal.go \
|
|
$(cmdsrcdir)/gofmt/rewrite.go \
|
|
$(cmdsrcdir)/gofmt/simplify.go
|
|
|
|
go_cmd_cgo_files = \
|
|
$(cmdsrcdir)/cgo/ast.go \
|
|
$(cmdsrcdir)/cgo/doc.go \
|
|
$(cmdsrcdir)/cgo/gcc.go \
|
|
$(cmdsrcdir)/cgo/godefs.go \
|
|
$(cmdsrcdir)/cgo/main.go \
|
|
$(cmdsrcdir)/cgo/out.go \
|
|
$(cmdsrcdir)/cgo/util.go
|
|
|
|
go_cmd_vet_files = \
|
|
$(cmdsrcdir)/vet/asmdecl.go \
|
|
$(cmdsrcdir)/vet/assign.go \
|
|
$(cmdsrcdir)/vet/atomic.go \
|
|
$(cmdsrcdir)/vet/bool.go \
|
|
$(cmdsrcdir)/vet/buildtag.go \
|
|
$(cmdsrcdir)/vet/cgo.go \
|
|
$(cmdsrcdir)/vet/composite.go \
|
|
$(cmdsrcdir)/vet/copylock.go \
|
|
$(cmdsrcdir)/vet/deadcode.go \
|
|
$(cmdsrcdir)/vet/dead.go \
|
|
$(cmdsrcdir)/vet/doc.go \
|
|
$(cmdsrcdir)/vet/httpresponse.go \
|
|
$(cmdsrcdir)/vet/lostcancel.go \
|
|
$(cmdsrcdir)/vet/main.go \
|
|
$(cmdsrcdir)/vet/method.go \
|
|
$(cmdsrcdir)/vet/nilfunc.go \
|
|
$(cmdsrcdir)/vet/print.go \
|
|
$(cmdsrcdir)/vet/rangeloop.go \
|
|
$(cmdsrcdir)/vet/shadow.go \
|
|
$(cmdsrcdir)/vet/shift.go \
|
|
$(cmdsrcdir)/vet/structtag.go \
|
|
$(cmdsrcdir)/vet/tests.go \
|
|
$(cmdsrcdir)/vet/types.go \
|
|
$(cmdsrcdir)/vet/unsafeptr.go \
|
|
$(cmdsrcdir)/vet/unused.go
|
|
|
|
go_cmd_buildid_files = \
|
|
$(cmdsrcdir)/buildid/buildid.go \
|
|
$(cmdsrcdir)/buildid/doc.go
|
|
|
|
go_cmd_test2json_files = \
|
|
$(cmdsrcdir)/test2json/main.go
|
|
|
|
GCCGO_INSTALL_NAME := $(shell echo gccgo|sed '$(program_transform_name)')
|
|
GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
|
|
GXX_INSTALL_NAME := $(shell echo g++|sed '$(program_transform_name)')
|
|
|
|
zdefaultcc.go: s-zdefaultcc; @true
|
|
s-zdefaultcc: Makefile
|
|
echo 'package main' > zdefaultcc.go.tmp
|
|
echo 'func defaultGCCGO(goos, goarch string) string { return "$(bindir)/$(GCCGO_INSTALL_NAME)" }' >> zdefaultcc.go.tmp
|
|
echo 'func defaultCC(goos, goarch string) string { return "$(GCC_INSTALL_NAME)" }' >> zdefaultcc.go.tmp
|
|
echo 'func defaultCXX(goos, goarch string) string { return "$(GXX_INSTALL_NAME)" }' >> zdefaultcc.go.tmp
|
|
echo 'const defaultPkgConfig = "pkg-config"' >> zdefaultcc.go.tmp
|
|
$(SHELL) $(srcdir)/../move-if-change zdefaultcc.go.tmp zdefaultcc.go
|
|
$(STAMP) $@
|
|
|
|
MOSTLYCLEANFILES = \
|
|
zdefaultcc.go s-zdefaultcc \
|
|
check-gccgo check-gcc gotools.head *-testlog gotools.sum gotools.log \
|
|
*.sent
|
|
|
|
mostlyclean-local:
|
|
rm -rf check-go-dir check-runtime-dir cgo-test-dir carchive-test-dir
|
|
|
|
if NATIVE
|
|
|
|
# For a native build we build the programs using the newly built libgo
|
|
# and install them as regular programs.
|
|
|
|
bin_PROGRAMS = go$(EXEEXT) gofmt$(EXEEXT)
|
|
noinst_PROGRAMS = cgo$(EXEEXT) vet$(EXEEXT) buildid$(EXEEXT) test2json$(EXEEXT)
|
|
man_MANS = go.1 gofmt.1
|
|
|
|
go$(EXEEXT): $(go_cmd_go_files) $(LIBGOTOOL) $(LIBGODEP)
|
|
$(GOLINK) $(go_cmd_go_files) $(LIBGOTOOL) $(LIBS) $(NET_LIBS)
|
|
gofmt$(EXEEXT): $(go_cmd_gofmt_files) $(LIBGODEP)
|
|
$(GOLINK) $(go_cmd_gofmt_files) $(LIBS) $(NET_LIBS)
|
|
cgo$(EXEEXT): $(go_cmd_cgo_files) zdefaultcc.go $(LIBGOTOOL) $(LIBGODEP)
|
|
$(GOLINK) $(go_cmd_cgo_files) zdefaultcc.go $(LIBGOTOOL) $(LIBS) $(NET_LIBS)
|
|
vet$(EXEEXT): $(go_cmd_vet_files) $(LIBGOTOOL) $(LIBGODEP)
|
|
$(GOLINK) $(go_cmd_vet_files) $(LIBGOTOOL) $(LIBS) $(NET_LIBS)
|
|
buildid$(EXEEXT): $(go_cmd_buildid_files) $(LIBGOTOOL) $(LIBGODEP)
|
|
$(GOLINK) $(go_cmd_buildid_files) $(LIBGOTOOL) $(LIBS) $(NET_LIBS)
|
|
test2json$(EXEEXT): $(go_cmd_test2json_files) $(LIBGOTOOL) $(LIBGODEP)
|
|
$(GOLINK) $(go_cmd_test2json_files) $(LIBGOTOOL) $(LIBS) $(NET_LIBS)
|
|
|
|
install-exec-local: $(noinst_PROGRAMS)
|
|
$(MKDIR_P) $(DESTDIR)$(libexecsubdir)
|
|
for f in $(noinst_PROGRAMS); do \
|
|
rm -f $(DESTDIR)$(libexecsubdir)/$$f; \
|
|
$(INSTALL_PROGRAM) $$f $(DESTDIR)$(libexecsubdir)/$$f; \
|
|
done
|
|
|
|
uninstall-local:
|
|
for f in $(noinst_PROGRAMS); do \
|
|
rm -f $(DESTDIR)$(libexecsubdir)/$$f; \
|
|
done
|
|
|
|
GOTESTFLAGS =
|
|
|
|
# Number of seconds before tests time out.
|
|
GOTOOLS_TEST_TIMEOUT = 480
|
|
|
|
# Run tests using the go tool, and frob the output to look like that
|
|
# generated by DejaGNU. The main output of this is two files:
|
|
# gotools.sum and gotools.log.
|
|
|
|
# check-head starts generating the log files in DejaGNU format. This
|
|
# is a separate target so that the date is approximately when we start
|
|
# running the tests.
|
|
check-head:
|
|
@echo "Test Run By $${USER} on `date`" > gotools.head
|
|
@echo "Native configuration is $(host_triplet)" >> gotools.head
|
|
@echo >> gotools.head
|
|
@echo " === gotools tests ===" >> gotools.head
|
|
@echo >> gotools.head
|
|
|
|
# check-gccgo is a little shell script that executes gccgo with the
|
|
# options to pick up the newly built libgo and libstdc++.
|
|
check-gccgo: Makefile
|
|
rm -f $@ $@.tmp
|
|
echo "#!/bin/sh" > $@.tmp
|
|
abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
|
|
echo "$(GOCOMPILE)" '"$$@"' "-I $${abs_libgodir} -L $${abs_libgodir} -L $${abs_libgodir}/.libs -B$${abs_libgodir}/../libstdc++-v3/src/.libs -B$${abs_libgodir}/../libstdc++-v3/libsupc++/.libs" >> $@.tmp
|
|
chmod +x $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
# check-gcc is a little shell script that executes the newly built gcc
|
|
# with the options to pick up the newly built libgo and libstdc++.
|
|
check-gcc: Makefile
|
|
rm -f $@ $@.tmp
|
|
echo "#!/bin/sh" > $@.tmp
|
|
abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
|
|
echo "$(GCC_FOR_TARGET)" '"$$@"' "-L $${abs_libgodir} -L $${abs_libgodir}/.libs -B$${abs_libgodir}/../libstdc++-v3/src/.libs -B$${abs_libgodir}/../libstdc++-v3/libsupc++/.libs" >> $@.tmp
|
|
chmod +x $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
# CHECK_ENV sets up the environment to run the newly built go tool.
|
|
# If you change this, change ECHO_ENV, below.
|
|
# The fl shell variable is used to avoid having FAIL appear
|
|
# in the log unnecessarily.
|
|
CHECK_ENV = \
|
|
PATH=`echo $(abs_builddir):$${PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \
|
|
export PATH; \
|
|
GCCGO="$(abs_builddir)/check-gccgo"; \
|
|
export GCCGO; \
|
|
CC="$(abs_builddir)/check-gcc"; \
|
|
export CC; \
|
|
GCCGOTOOLDIR="$(abs_builddir)"; \
|
|
export GCCGOTOOLDIR; \
|
|
GO_TESTING_GOTOOLS=yes; \
|
|
export GO_TESTING_GOTOOLS; \
|
|
abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
|
|
LD_LIBRARY_PATH=`echo $${abs_libgodir}/.libs:$${LD_LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \
|
|
export LD_LIBRARY_PATH; \
|
|
GOROOT=$${abs_libgodir}; \
|
|
export GOROOT; \
|
|
GOCACHE=$(abs_builddir)/gocache-test; \
|
|
export GOCACHE; \
|
|
fl1="FA"; fl2="IL"; fl="$${fl1}$${fl2}";
|
|
|
|
# ECHO_ENV is a variant of CHECK_ENV to put into a testlog file.
|
|
# It assumes that abs_libgodir is set.
|
|
ECHO_ENV = PATH=`echo $(abs_builddir):$${PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'` GCCGO='$(abs_builddir)/check-gccgo' CC='$(abs_builddir)/check-gcc' GCCGOTOOLDIR='$(abs_builddir)' GO_TESTING_GOTOOLS=yes LD_LIBRARY_PATH=`echo $${abs_libgodir}/.libs:$${LD_LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'` GOROOT=`echo $${abs_libgodir} GOCACHE='$(abs_builddir)/gocache-test'`
|
|
|
|
# check-go-tool runs `go test cmd/go` in our environment.
|
|
check-go-tool: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
|
|
rm -rf check-go-dir cmd_go-testlog
|
|
$(MKDIR_P) check-go-dir/src/cmd/go
|
|
cp $(cmdsrcdir)/go/*.go check-go-dir/src/cmd/go/
|
|
cp -r $(cmdsrcdir)/go/internal check-go-dir/src/cmd/go/
|
|
cp $(libgodir)/zdefaultcc.go check-go-dir/src/cmd/go/internal/cfg/
|
|
cp -r $(cmdsrcdir)/go/testdata check-go-dir/src/cmd/go/
|
|
cp -r $(cmdsrcdir)/internal check-go-dir/src/cmd/
|
|
cp $(libgodir)/objabi.go check-go-dir/src/cmd/internal/objabi/
|
|
@abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
|
|
abs_checkdir=`cd check-go-dir && $(PWD_COMMAND)`; \
|
|
echo "cd check-go-dir/src/cmd/go && $(ECHO_ENV) GOPATH=$${abs_checkdir} $(abs_builddir)/go$(EXEEXT) test -test.short -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v" > cmd_go-testlog
|
|
$(CHECK_ENV) \
|
|
GOPATH=`cd check-go-dir && $(PWD_COMMAND)`; \
|
|
export GOPATH; \
|
|
(cd check-go-dir/src/cmd/go && $(abs_builddir)/go$(EXEEXT) test -test.short -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v) >> cmd_go-testlog 2>&1 || echo "--- $${fl}: go test cmd/go (0.00s)" >> cmd_go-testlog
|
|
grep '^--- ' cmd_go-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
|
|
|
|
# check-runtime runs `go test runtime` in our environment.
|
|
# The runtime package is also tested as part of libgo,
|
|
# but the runtime tests use the go tool heavily, so testing
|
|
# here too will catch more problems.
|
|
check-runtime: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
|
|
rm -rf check-runtime-dir runtime-testlog
|
|
$(MKDIR_P) check-runtime-dir
|
|
@abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
|
|
LD_LIBRARY_PATH=`echo $${abs_libgodir}/.libs:$${LD_LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \
|
|
GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \
|
|
GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \
|
|
files=`$(SHELL) $(libgosrcdir)/../match.sh --goarch=$${GOARCH} --goos=$${GOOS} --srcdir=$(libgosrcdir)/runtime --extrafiles="$(libgodir)/runtime_sysinfo.go $(libgodir)/sigtab.go" --tag=libffi`; \
|
|
echo "$(ECHO_ENV) GC='$(abs_builddir)/check-gccgo -fgo-compiling-runtime' GOARCH=$${GOARCH} GOOS=$${GOOS} $(SHELL) $(libgosrcdir)/../testsuite/gotest --goarch=$${GOARCH} --goos=$${GOOS} --basedir=$(libgosrcdir)/.. --srcdir=$(libgosrcdir)/runtime --pkgpath=runtime --pkgfiles='$${files}' $(GOTESTFLAGS) -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v" > runtime-testlog
|
|
$(CHECK_ENV) \
|
|
GC="$${GCCGO} -fgo-compiling-runtime"; \
|
|
export GC; \
|
|
GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \
|
|
GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \
|
|
files=`$(SHELL) $(libgosrcdir)/../match.sh --goarch=$${GOARCH} --goos=$${GOOS} --srcdir=$(libgosrcdir)/runtime --extrafiles="$(libgodir)/runtime_sysinfo.go $(libgodir)/sigtab.go" --tag=libffi`; \
|
|
$(SHELL) $(libgosrcdir)/../testsuite/gotest --goarch=$${GOARCH} --goos=$${GOOS} --basedir=$(libgosrcdir)/.. --srcdir=$(libgosrcdir)/runtime --pkgpath=runtime --pkgfiles="$${files}" $(GOTESTFLAGS) -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v >> runtime-testlog 2>&1 || echo "--- $${fl}: go test runtime (0.00s)" >> runtime-testlog
|
|
grep '^--- ' runtime-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
|
|
|
|
# check-cgo-test runs `go test misc/cgo/test` in our environment.
|
|
check-cgo-test: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
|
|
rm -rf cgo-test-dir cgo-testlog
|
|
$(MKDIR_P) cgo-test-dir/misc/cgo
|
|
cp -r $(libgomiscdir)/cgo/test cgo-test-dir/misc/cgo/
|
|
@abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
|
|
echo "cd cgo-test-dir/misc/cgo/test && $(ECHO_ENV) GOTRACEBACK=2 $(abs_builddir)/go$(EXEEXT) test -test.short -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v" > cgo-testlog
|
|
$(CHECK_ENV) \
|
|
GOTRACEBACK=2; \
|
|
export GOTRACEBACK; \
|
|
(cd cgo-test-dir/misc/cgo/test && $(abs_builddir)/go$(EXEEXT) test -test.short -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v) >> cgo-testlog 2>&1 || echo "--- $${fl}: go test misc/cgo/test (0.00s)" >> cgo-testlog
|
|
grep '^--- ' cgo-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
|
|
|
|
# check-carchive-test runs `go test misc/cgo/testcarchive/carchive_test.go`
|
|
# in our environment.
|
|
check-carchive-test: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
|
|
rm -rf carchive-test-dir carchive-testlog
|
|
$(MKDIR_P) carchive-test-dir/misc/cgo
|
|
cp -r $(libgomiscdir)/cgo/testcarchive carchive-test-dir/misc/cgo/
|
|
@abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
|
|
echo "cd carchive-test-dir/misc/cgo/testcarchive && $(ECHO_ENV) LIBRARY_PATH=`echo $${abs_libgodir}/.libs` $(abs_builddir)/go$(EXEEXT) test -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v carchive_test.go" > carchive-testlog
|
|
$(CHECK_ENV) \
|
|
LIBRARY_PATH=`echo $${abs_libgodir}/.libs:$${LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \
|
|
export LIBRARY_PATH; \
|
|
(cd carchive-test-dir/misc/cgo/testcarchive && $(abs_builddir)/go$(EXEEXT) test -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v carchive_test.go) >> carchive-testlog 2>&1 || echo "--- $${fl}: go test misc/cgo/testcarchive (0.00s)" >> carchive-testlog
|
|
grep '^--- ' carchive-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
|
|
|
|
# check-vet runs `go test cmd/vet` in our environment.
|
|
check-vet: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
|
|
rm -rf check-vet-dir cmd_vet-testlog
|
|
$(MKDIR_P) check-vet-dir/src/cmd
|
|
cp -r $(cmdsrcdir)/vet check-vet-dir/src/cmd/
|
|
@abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
|
|
abs_checkdir=`cd check-vet-dir && $(PWD_COMMAND)`; \
|
|
echo "cd check-vet-dir/src/cmd/vet && $(ECHO_ENV) GOPATH=$${abs_checkdir} $(abs_builddir)/go$(EXEEXT) test -test.short -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v" > cmd_vet-testlog
|
|
$(CHECK_ENV) \
|
|
GOPATH=`cd check-vet-dir && $(PWD_COMMAND)`; \
|
|
export GOPATH; \
|
|
(cd check-vet-dir/src/cmd/vet && $(abs_builddir)/go$(EXEEXT) test -test.short -test.timeout=$(GOTOOLS_TEST_TIMEOUT)s -test.v) >> cmd_vet-testlog 2>&1 || echo "--- $${fl}: go test cmd/vet (0.00s)" >> cmd_vet-testlog
|
|
grep '^--- ' cmd_vet-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
|
|
|
|
# The check targets runs the tests and assembles the output files.
|
|
check: check-head check-go-tool check-runtime check-cgo-test check-carchive-test check-vet
|
|
@mv gotools.head gotools.sum
|
|
@cp gotools.sum gotools.log
|
|
@for file in cmd_go-testlog runtime-testlog cgo-testlog carchive-testlog cmd_vet-testlog; do \
|
|
testname=`echo $${file} | sed -e 's/-testlog//' -e 's|_|/|'`; \
|
|
echo "Running $${testname}" >> gotools.sum; \
|
|
echo "Running $${testname}" >> gotools.log; \
|
|
sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' < $${file} >> gotools.log; \
|
|
grep '^--- ' $${file} | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' -e 's/SKIP/UNTESTED/' | sort -k 2 >> gotools.sum; \
|
|
done
|
|
@echo >> gotools.sum
|
|
@echo " === gotools Summary ===" >> gotools.sum
|
|
@pass=`grep -c '^PASS' gotools.sum`; \
|
|
if test "$${pass}" -ne "0"; then \
|
|
echo "# of expected passes $${pass}" >> gotools.sum; \
|
|
fi
|
|
@fail=`grep -c '^FAIL' gotools.sum`; \
|
|
if test "$${fail}" -ne "0"; then \
|
|
echo "# of unexpected failures $${fail}" >> gotools.sum; \
|
|
fi
|
|
@untested=`grep -c '^UNTESTED' gotools.sum`; \
|
|
if test "$${untested}" -ne "0"; then \
|
|
echo "# of untested testcases $${untested}" >> gotools.sum; \
|
|
fi
|
|
@echo `echo $(GOC_FOR_TARGET) | sed -e 's/ .*//'` `$(GOC_FOR_TARGET) -v 2>&1 | grep " version" | sed -n -e 's/.* \(version.*$$\)/\1/p'` >> gotools.sum
|
|
@echo >> gotools.log
|
|
@echo "runtest completed at `date`" >> gotools.log
|
|
@if grep '^FAIL' gotools.sum >/dev/null 2>&1; then exit 1; fi
|
|
|
|
.PHONY: check check-head check-go-tool check-runtime check-cgo-test check-carchive-test check-vet
|
|
|
|
else
|
|
|
|
# For a non-native build we have to build the programs using a
|
|
# previously built host (or build -> host) Go compiler. We should
|
|
# only do this if such a compiler is available. We also need to get
|
|
# the right values for GOARCH and GOOS in the default build context in
|
|
# the go/build package. Figure this out later.
|
|
|
|
endif
|