diff options
Diffstat (limited to 'gotools/Makefile.am')
-rw-r--r-- | gotools/Makefile.am | 104 |
1 files changed, 83 insertions, 21 deletions
diff --git a/gotools/Makefile.am b/gotools/Makefile.am index 010c5bb554b..b9dced4a5d7 100644 --- a/gotools/Makefile.am +++ b/gotools/Makefile.am @@ -44,6 +44,7 @@ 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 \ @@ -100,13 +101,18 @@ zdefaultcc.go: s-zdefaultcc; @true s-zdefaultcc: Makefile echo 'package main' > zdefaultcc.go.tmp echo 'const defaultGCCGO = "$(bindir)/$(GCCGO_INSTALL_NAME)"' >> zdefaultcc.go.tmp - echo 'const defaultCC = "$(bindir)/$(GCC_INSTALL_NAME)"' >> zdefaultcc.go.tmp - echo 'const defaultCXX = "$(bindir)/$(GXX_INSTALL_NAME)"' >> zdefaultcc.go.tmp + echo 'const defaultCC = "$(GCC_INSTALL_NAME)"' >> zdefaultcc.go.tmp + echo 'const defaultCXX = "$(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 +MOSTLYCLEANFILES = \ + zdefaultcc.go s-zdefaultcc \ + check-gccgo 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 @@ -156,6 +162,7 @@ check-gccgo: Makefile chmod +x $@ # CHECK_ENV sets up the environment to run the newly built go tool. +# If you change this, change ECHO_ENV, below. CHECK_ENV = \ PATH=`echo $(abs_builddir):$${PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \ export PATH; \ @@ -167,27 +174,85 @@ CHECK_ENV = \ 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; + export LD_LIBRARY_PATH; \ + GOROOT=$${abs_libgodir}; \ + export GOROOT; + +# 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' 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}` # check-go-tools runs `go test cmd/go` in our environment. -check-go-tool: go$(EXEEXT) check-head check-gccgo - rm -rf check-go-dir +check-go-tool: go$(EXEEXT) cgo$(EXEEXT) check-head check-gccgo + 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 $(libgodir)/zstdpkglist.go check-go-dir/src/cmd/go/ cp zdefaultcc.go check-go-dir/src/cmd/go/ cp -r $(cmdsrcdir)/go/testdata check-go-dir/src/cmd/go/ + @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.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.v) > cmd_go-testlog 2>&1 || true grep '^--- ' cmd_go-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' +# 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) cgo$(EXEEXT) check-head check-gccgo + 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}' -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}" -test.v >> runtime-testlog 2>&1 || true + grep '^--- ' runtime-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' + +# check-cgo-test runs `go test misc/cgo/test` in our environment. +check-cgo-test: go$(EXEEXT) cgo$(EXEEXT) check-head check-gccgo + 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.v" > cgo-testlog + $(CHECK_ENV) \ + GOTRACEBACK=2; \ + export GOTRACEBACK; \ + (cd cgo-test-dir/misc/cgo/test && $(abs_builddir)/go$(EXEEXT) test -test.short -test.v) >> cgo-testlog 2>&1 || true + grep '^--- ' cgo-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' + +# check-carchive-test runs `go test misc/cgo/testcarchive/carchive_test.go` +# in our environment. +check-carchive-test: go$(EXEEXT) cgo$(EXEEXT) check-head check-gccgo + 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.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.v carchive_test.go) >> carchive-testlog 2>&1 || true + grep '^--- ' carchive-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' + # The check targets runs the tests and assembles the output files. -check: check-head check-go-tool - mv gotools.head gotools.sum - cp gotools.sum gotools.log - for file in cmd_go-testlog; do \ +check: check-head check-go-tool check-runtime check-cgo-test check-carchive-test + @mv gotools.head gotools.sum + @cp gotools.sum gotools.log + @for file in cmd_go-testlog runtime-testlog cgo-testlog carchive-testlog; do \ testname=`echo $${file} | sed -e 's/-testlog//' -e 's|_|/|'`; \ echo "Running $${testname}" >> gotools.sum; \ echo "Running $${testname}" >> gotools.log; \ @@ -196,24 +261,24 @@ check: check-head check-go-tool done @echo >> gotools.sum @echo " === gotools Summary ===" >> gotools.sum - pass=`grep -c '^PASS' 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`; \ + @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`; \ + @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 + @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 +.PHONY: check check-head check-go-tool check-runtime check-cgo-test check-carchive-test else @@ -224,6 +289,3 @@ else # the go/build package. Figure this out later. endif - -mostlyclean-local: - rm -rf check-go-dir |