2015-08-28 15:33:40 +00:00
# Makefile for gotools
2017-10-07 00:16:47 +00:00
# Copyright (C) 2015-2016 Free Software Foundation, Inc.
2015-08-28 15:33:40 +00:00
#
# 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/>.
2019-06-02 15:48:37 +00:00
ACLOCAL_AMFLAGS = -I ../config
2015-08-28 15:33:40 +00:00
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
2018-12-28 15:30:48 +00:00
LIBGOTOOL = $( libgodir) /libgotool.a
2015-08-28 15:33:40 +00:00
i f N A T I V E
# Use the compiler we just built.
2017-04-10 11:32:00 +00:00
GOCOMPILER = $( GOC_FOR_TARGET) $( XGCC_FLAGS_FOR_TARGET)
2015-08-28 15:33:40 +00:00
e l s e
GOCOMPILER = $( GOC)
e n d i f
GOCFLAGS = $( CFLAGS_FOR_TARGET)
GOCOMPILE = $( GOCOMPILER) $( GOCFLAGS)
2018-12-28 15:30:48 +00:00
AM_GOCFLAGS = -I $( libgodir)
2015-08-28 15:33:40 +00:00
AM_LDFLAGS = -L $( libgodir) -L $( libgodir) /.libs
GOLINK = $( GOCOMPILER) $( GOCFLAGS) $( AM_GOCFLAGS) $( LDFLAGS) $( AM_LDFLAGS) -o $@
2018-12-28 15:30:48 +00:00
libgosrcdir = $( srcdir) /../libgo/go
cmdsrcdir = $( libgosrcdir) /cmd
libgomiscdir = $( srcdir) /../libgo/misc
2015-08-28 15:33:40 +00:00
go_cmd_go_files = \
2017-04-10 11:32:00 +00:00
$( cmdsrcdir) /go/alldocs.go \
2015-08-28 15:33:40 +00:00
$( cmdsrcdir) /go/go11.go \
2018-12-28 15:30:48 +00:00
$( cmdsrcdir) /go/main.go
2015-08-28 15:33:40 +00:00
go_cmd_gofmt_files = \
$( cmdsrcdir) /gofmt/doc.go \
$( cmdsrcdir) /gofmt/gofmt.go \
2017-04-10 11:32:00 +00:00
$( cmdsrcdir) /gofmt/internal.go \
2015-08-28 15:33:40 +00:00
$( cmdsrcdir) /gofmt/rewrite.go \
$( cmdsrcdir) /gofmt/simplify.go
go_cmd_cgo_files = \
$( cmdsrcdir) /cgo/ast.go \
2022-10-27 18:55:19 +00:00
$( cmdsrcdir) /cgo/ast_go118.go \
2015-08-28 15:33:40 +00:00
$( cmdsrcdir) /cgo/doc.go \
$( cmdsrcdir) /cgo/gcc.go \
$( cmdsrcdir) /cgo/godefs.go \
$( cmdsrcdir) /cgo/main.go \
$( cmdsrcdir) /cgo/out.go \
$( cmdsrcdir) /cgo/util.go
2018-12-28 15:30:48 +00:00
go_cmd_vet_files = \
$( cmdsrcdir) /vet/doc.go \
2019-06-02 15:48:37 +00:00
$( cmdsrcdir) /vet/main.go
2018-12-28 15:30:48 +00:00
go_cmd_buildid_files = \
$( cmdsrcdir) /buildid/buildid.go \
$( cmdsrcdir) /buildid/doc.go
go_cmd_test2json_files = \
$( cmdsrcdir) /test2json/main.go
2015-08-28 15:33:40 +00:00
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
2018-12-28 15:30:48 +00:00
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
2017-10-07 00:16:47 +00:00
echo 'const defaultPkgConfig = "pkg-config"' >> zdefaultcc.go.tmp
2015-08-28 15:33:40 +00:00
$( SHELL) $( srcdir) /../move-if-change zdefaultcc.go.tmp zdefaultcc.go
$( STAMP) $@
2018-12-28 15:30:48 +00:00
MOSTLYCLEANFILES = \
zdefaultcc.go s-zdefaultcc \
check-gccgo check-gcc gotools.head *-testlog gotools.sum gotools.log \
*.sent
mostlyclean-local :
2019-06-02 15:48:37 +00:00
if test -d check-go-dir; then chmod -R u+w check-go-dir; fi
2022-10-27 18:55:19 +00:00
rm -rf check-go-dir cgo-test-dir carchive-test-dir \
check-vet-dir check-embed-dir gocache-test
2015-08-28 15:33:40 +00:00
i f N A T I V E
# 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)
2018-12-28 15:30:48 +00:00
noinst_PROGRAMS = cgo$( EXEEXT) vet$( EXEEXT) buildid$( EXEEXT) test2json$( EXEEXT)
2015-08-28 15:33:40 +00:00
man_MANS = go.1 gofmt.1
2018-12-28 15:30:48 +00:00
go$(EXEEXT) : $( go_cmd_go_files ) $( LIBGOTOOL ) $( LIBGODEP )
$( GOLINK) $( go_cmd_go_files) $( LIBGOTOOL) $( LIBS) $( NET_LIBS)
2015-08-28 15:33:40 +00:00
gofmt$(EXEEXT) : $( go_cmd_gofmt_files ) $( LIBGODEP )
2022-10-27 18:55:19 +00:00
$( GOLINK) $( go_cmd_gofmt_files) $( LIBGOTOOL) $( LIBS) $( NET_LIBS)
2018-12-28 15:30:48 +00:00
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_test 2json_files ) $( LIBGOTOOL ) $( LIBGODEP )
$( GOLINK) $( go_cmd_test2json_files) $( LIBGOTOOL) $( LIBS) $( NET_LIBS)
2015-08-28 15:33:40 +00:00
2018-12-28 15:30:48 +00:00
install-exec-local : $( noinst_PROGRAMS )
2015-08-28 15:33:40 +00:00
$( MKDIR_P) $( DESTDIR) $( libexecsubdir)
2018-12-28 15:30:48 +00:00
for f in $( noinst_PROGRAMS) ; do \
rm -f $( DESTDIR) $( libexecsubdir) /$$ f; \
$( INSTALL_PROGRAM) $$ f $( DESTDIR) $( libexecsubdir) /$$ f; \
done
2015-08-28 15:33:40 +00:00
uninstall-local :
2018-12-28 15:30:48 +00:00
for f in $( noinst_PROGRAMS) ; do \
rm -f $( DESTDIR) $( libexecsubdir) /$$ f; \
done
GOTESTFLAGS =
# Number of seconds before tests time out.
2019-06-02 15:48:37 +00:00
GOTOOLS_TEST_TIMEOUT = 1200
2018-12-28 15:30:48 +00:00
# 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
2022-10-27 18:55:19 +00:00
if test -d check-go-dir; then chmod -R u+w check-go-dir; fi
2018-12-28 15:30:48 +00:00
rm -rf check-go-dir cmd_go-testlog
$( MKDIR_P) check-go-dir/src/cmd/go
2022-10-27 18:55:19 +00:00
cp $( libgosrcdir) /go.mod check-go-dir/src/
cp $( cmdsrcdir) /go.mod check-go-dir/src/cmd/
$( MKDIR_P) check-go-dir/src/vendor check-go-dir/src/cmd/vendor
cp $( libgosrcdir) /vendor/modules.txt check-go-dir/src/vendor/
cp $( libgosrcdir) /cmd/vendor/modules.txt check-go-dir/src/cmd/vendor/
2018-12-28 15:30:48 +00:00
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/
2022-10-27 18:55:19 +00:00
$( MKDIR_P) check-go-dir/src/cmd/vendor/golang.org/x
cp -r $( libgosrcdir) /golang.org/x/mod check-go-dir/src/cmd/vendor/golang.org/x/
cp -r $( libgosrcdir) /golang.org/x/crypto check-go-dir/src/cmd/vendor/golang.org/x/
cp -r $( libgosrcdir) /golang.org/x/xerrors check-go-dir/src/cmd/vendor/golang.org/x/
cp -r $( libgosrcdir) /golang.org/x/tools check-go-dir/src/cmd/vendor/golang.org/x/
2018-12-28 15:30:48 +00:00
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
2022-10-27 18:55:19 +00:00
rm -f runtime-testlog
2018-12-28 15:30:48 +00:00
@abs_libgodir= ` cd $( libgodir) && $( PWD_COMMAND) ` ; \
LD_LIBRARY_PATH = ` echo $$ { abs_libgodir} /.libs:$$ { LD_LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,' ` ; \
2019-06-02 15:48:37 +00:00
export LD_LIBRARY_PATH; \
2018-12-28 15:30:48 +00:00
GOARCH = ` $( abs_builddir) /go$( EXEEXT) env GOARCH` ; \
GOOS = ` $( abs_builddir) /go$( EXEEXT) env GOOS` ; \
2022-10-27 18:55:19 +00:00
files = ` $( SHELL) $( libgosrcdir) /../match.sh --goarch= $$ { GOARCH} --goos= $$ { GOOS} --srcdir= $( libgosrcdir) /runtime --extrafiles= " $( libgodir) /runtime_linknames.go $( libgodir) /runtime_sysinfo.go $( libgodir) /sigtab.go $( libgodir) /goroot.go " --tag= libffi` ; \
2018-12-28 15:30:48 +00:00
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` ; \
2022-10-27 18:55:19 +00:00
files = ` $( SHELL) $( libgosrcdir) /../match.sh --goarch= $$ { GOARCH} --goos= $$ { GOOS} --srcdir= $( libgosrcdir) /runtime --extrafiles= " $( libgodir) /runtime_linknames.go $( libgodir) /runtime_sysinfo.go $( libgodir) /sigtab.go $( libgodir) /goroot.go " --tag= libffi` ; \
2018-12-28 15:30:48 +00:00
$( 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
2022-10-27 18:55:19 +00:00
# check-cgo-test runs `go test` in misc/cgo/test.
2018-12-28 15:30:48 +00:00
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
2022-10-27 18:55:19 +00:00
echo 'module misc' > cgo-test-dir/misc/go.mod
2018-12-28 15:30:48 +00:00
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
2022-10-27 18:55:19 +00:00
# check-carchive-test runs `go test` in misc/cgo/testcarchive.
2018-12-28 15:30:48 +00:00
# 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
2022-10-27 18:55:19 +00:00
echo 'module misc' > carchive-test-dir/misc/go.mod
2018-12-28 15:30:48 +00:00
cp -r $( libgomiscdir) /cgo/testcarchive carchive-test-dir/misc/cgo/
@abs_libgodir= ` cd $( libgodir) && $( PWD_COMMAND) ` ; \
2022-10-27 18:55:19 +00:00
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-testlog
2018-12-28 15:30:48 +00:00
$( CHECK_ENV) \
LIBRARY_PATH = ` echo $$ { abs_libgodir} /.libs:$$ { LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,' ` ; \
export LIBRARY_PATH; \
2022-10-27 18:55:19 +00:00
( cd carchive-test-dir/misc/cgo/testcarchive && $( abs_builddir) /go$( EXEEXT) test -test.timeout= $( GOTOOLS_TEST_TIMEOUT) s -test.v) >> carchive-testlog 2>& 1 || echo " --- $$ {fl}: go test misc/cgo/testcarchive (0.00s) " >> carchive-testlog
2018-12-28 15:30:48 +00:00
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
2019-06-02 15:48:37 +00:00
$( MKDIR_P) check-vet-dir/src/cmd/internal check-vet-dir/src/cmd/vendor/golang.org/x
2022-10-27 18:55:19 +00:00
cp $( libgosrcdir) /go.mod check-vet-dir/src/
cp $( cmdsrcdir) /go.mod check-vet-dir/src/cmd/
$( MKDIR_P) check-vet-dir/src/vendor check-vet-dir/src/cmd/vendor
cp $( libgosrcdir) /vendor/modules.txt check-vet-dir/src/vendor/
cp $( libgosrcdir) /cmd/vendor/modules.txt check-vet-dir/src/cmd/vendor/
2018-12-28 15:30:48 +00:00
cp -r $( cmdsrcdir) /vet check-vet-dir/src/cmd/
2019-06-02 15:48:37 +00:00
cp -r $( cmdsrcdir) /internal/objabi check-vet-dir/src/cmd/internal
cp $( libgodir) /objabi.go check-vet-dir/src/cmd/internal/objabi/
cp -r $( libgosrcdir) /golang.org/x/tools check-vet-dir/src/cmd/vendor/golang.org/x/
2018-12-28 15:30:48 +00:00
@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
2022-10-27 18:55:19 +00:00
# check-embed runs `go test embed/internal/embedtest` in our environment.
check-embed : go $( EXEEXT ) $( noinst_PROGRAMS ) check -head check -gccgo check -gcc
rm -rf check-embed-dir embed-testlog
$( MKDIR_P) check-embed-dir/src/embed/internal
cp $( libgosrcdir) /go.mod check-embed-dir/src/
$( MKDIR_P) check-embed-dir/src/vendor
cp $( libgosrcdir) /vendor/modules.txt check-embed-dir/src/vendor/
cp -r $( libgosrcdir) /embed/internal/embedtest check-embed-dir/src/embed/internal
@abs_libgodir= ` cd $( libgodir) && $( PWD_COMMAND) ` ; \
abs_checkdir = ` cd check-embed-dir && $( PWD_COMMAND) ` ; \
echo " cd check-embed-dir/src/embed/internal/embedtest && $( ECHO_ENV) GOPATH= $$ {abs_checkdir} $( abs_builddir) /go $( EXEEXT) test -test.short -test.timeout= $( GOTOOLS_TEST_TIMEOUT) s -test.v " > embed-testlog
$( CHECK_ENV) \
GOPATH = ` cd check-embed-dir && $( PWD_COMMAND) ` ; \
export GOPATH; \
( cd check-embed-dir/src/embed/internal/embedtest && $( abs_builddir) /go$( EXEEXT) test -test.short -test.timeout= $( GOTOOLS_TEST_TIMEOUT) s -test.v) >> embed-testlog 2>& 1 || echo " --- $$ {fl}: go test embed/internal/embedtest (0.00s) " >> embed-testlog
grep '^--- ' embed-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
2018-12-28 15:30:48 +00:00
# The check targets runs the tests and assembles the output files.
2022-10-27 18:55:19 +00:00
check : check -head check -go -tool check -runtime check -cgo -test check -carchive -test check -vet check -embed
2018-12-28 15:30:48 +00:00
@mv gotools.head gotools.sum
@cp gotools.sum gotools.log
2022-10-27 18:55:19 +00:00
@for file in cmd_go-testlog runtime-testlog cgo-testlog carchive-testlog cmd_vet-testlog embed-testlog; do \
2018-12-28 15:30:48 +00:00
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
2022-10-27 18:55:19 +00:00
.PHONY : check check -head check -go -tool check -runtime check -cgo -test
.PHONY : check -carchive -test check -vet check -embed
2015-08-28 15:33:40 +00:00
e l s e
# 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.
e n d i f