Makefile.am 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. # Makefile for gotools
  2. # Copyright (C) 2015-2016 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. ACLOCAL_AMFLAGS = -I ../config
  18. gcc_version := $(shell $(GCC_FOR_TARGET) -dumpversion)
  19. libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
  20. mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
  21. PWD_COMMAND = $${PWDCMD-pwd}
  22. STAMP = echo timestamp >
  23. libgodir = ../$(target_noncanonical)/libgo
  24. LIBGODEP = $(libgodir)/libgo.la
  25. LIBGOTOOL = $(libgodir)/libgotool.a
  26. if NATIVE
  27. # Use the compiler we just built.
  28. GOCOMPILER = $(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET)
  29. else
  30. GOCOMPILER = $(GOC)
  31. endif
  32. GOCFLAGS = $(CFLAGS_FOR_TARGET)
  33. GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
  34. AM_GOCFLAGS = -I $(libgodir)
  35. AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
  36. GOLINK = $(GOCOMPILER) $(GOCFLAGS) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
  37. libgosrcdir = $(srcdir)/../libgo/go
  38. cmdsrcdir = $(libgosrcdir)/cmd
  39. libgomiscdir = $(srcdir)/../libgo/misc
  40. go_cmd_go_files = \
  41. $(cmdsrcdir)/go/alldocs.go \
  42. $(cmdsrcdir)/go/go11.go \
  43. $(cmdsrcdir)/go/main.go
  44. go_cmd_gofmt_files = \
  45. $(cmdsrcdir)/gofmt/doc.go \
  46. $(cmdsrcdir)/gofmt/gofmt.go \
  47. $(cmdsrcdir)/gofmt/internal.go \
  48. $(cmdsrcdir)/gofmt/rewrite.go \
  49. $(cmdsrcdir)/gofmt/simplify.go
  50. go_cmd_cgo_files = \
  51. $(cmdsrcdir)/cgo/ast.go \
  52. $(cmdsrcdir)/cgo/ast_go118.go \
  53. $(cmdsrcdir)/cgo/doc.go \
  54. $(cmdsrcdir)/cgo/gcc.go \
  55. $(cmdsrcdir)/cgo/godefs.go \
  56. $(cmdsrcdir)/cgo/main.go \
  57. $(cmdsrcdir)/cgo/out.go \
  58. $(cmdsrcdir)/cgo/util.go
  59. go_cmd_vet_files = \
  60. $(cmdsrcdir)/vet/doc.go \
  61. $(cmdsrcdir)/vet/main.go
  62. go_cmd_buildid_files = \
  63. $(cmdsrcdir)/buildid/buildid.go \
  64. $(cmdsrcdir)/buildid/doc.go
  65. go_cmd_test2json_files = \
  66. $(cmdsrcdir)/test2json/main.go
  67. GCCGO_INSTALL_NAME := $(shell echo gccgo|sed '$(program_transform_name)')
  68. GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
  69. GXX_INSTALL_NAME := $(shell echo g++|sed '$(program_transform_name)')
  70. zdefaultcc.go: s-zdefaultcc; @true
  71. s-zdefaultcc: Makefile
  72. echo 'package main' > zdefaultcc.go.tmp
  73. echo 'func defaultGCCGO(goos, goarch string) string { return "$(bindir)/$(GCCGO_INSTALL_NAME)" }' >> zdefaultcc.go.tmp
  74. echo 'func defaultCC(goos, goarch string) string { return "$(GCC_INSTALL_NAME)" }' >> zdefaultcc.go.tmp
  75. echo 'func defaultCXX(goos, goarch string) string { return "$(GXX_INSTALL_NAME)" }' >> zdefaultcc.go.tmp
  76. echo 'const defaultPkgConfig = "pkg-config"' >> zdefaultcc.go.tmp
  77. $(SHELL) $(srcdir)/../move-if-change zdefaultcc.go.tmp zdefaultcc.go
  78. $(STAMP) $@
  79. MOSTLYCLEANFILES = \
  80. zdefaultcc.go s-zdefaultcc \
  81. check-gccgo check-gcc gotools.head *-testlog gotools.sum gotools.log \
  82. *.sent
  83. mostlyclean-local:
  84. if test -d check-go-dir; then chmod -R u+w check-go-dir; fi
  85. rm -rf check-go-dir cgo-test-dir carchive-test-dir \
  86. check-vet-dir check-embed-dir gocache-test
  87. if NATIVE
  88. # For a native build we build the programs using the newly built libgo
  89. # and install them as regular programs.
  90. bin_PROGRAMS = go$(EXEEXT) gofmt$(EXEEXT)
  91. noinst_PROGRAMS = cgo$(EXEEXT) vet$(EXEEXT) buildid$(EXEEXT) test2json$(EXEEXT)
  92. man_MANS = go.1 gofmt.1
  93. go$(EXEEXT): $(go_cmd_go_files) $(LIBGOTOOL) $(LIBGODEP)
  94. $(GOLINK) $(go_cmd_go_files) $(LIBGOTOOL) $(LIBS) $(NET_LIBS)
  95. gofmt$(EXEEXT): $(go_cmd_gofmt_files) $(LIBGODEP)
  96. $(GOLINK) $(go_cmd_gofmt_files) $(LIBGOTOOL) $(LIBS) $(NET_LIBS)
  97. cgo$(EXEEXT): $(go_cmd_cgo_files) zdefaultcc.go $(LIBGOTOOL) $(LIBGODEP)
  98. $(GOLINK) $(go_cmd_cgo_files) zdefaultcc.go $(LIBGOTOOL) $(LIBS) $(NET_LIBS)
  99. vet$(EXEEXT): $(go_cmd_vet_files) $(LIBGOTOOL) $(LIBGODEP)
  100. $(GOLINK) $(go_cmd_vet_files) $(LIBGOTOOL) $(LIBS) $(NET_LIBS)
  101. buildid$(EXEEXT): $(go_cmd_buildid_files) $(LIBGOTOOL) $(LIBGODEP)
  102. $(GOLINK) $(go_cmd_buildid_files) $(LIBGOTOOL) $(LIBS) $(NET_LIBS)
  103. test2json$(EXEEXT): $(go_cmd_test2json_files) $(LIBGOTOOL) $(LIBGODEP)
  104. $(GOLINK) $(go_cmd_test2json_files) $(LIBGOTOOL) $(LIBS) $(NET_LIBS)
  105. install-exec-local: $(noinst_PROGRAMS)
  106. $(MKDIR_P) $(DESTDIR)$(libexecsubdir)
  107. for f in $(noinst_PROGRAMS); do \
  108. rm -f $(DESTDIR)$(libexecsubdir)/$$f; \
  109. $(INSTALL_PROGRAM) $$f $(DESTDIR)$(libexecsubdir)/$$f; \
  110. done
  111. uninstall-local:
  112. for f in $(noinst_PROGRAMS); do \
  113. rm -f $(DESTDIR)$(libexecsubdir)/$$f; \
  114. done
  115. GOTESTFLAGS =
  116. # Number of seconds before tests time out.
  117. GOTOOLS_TEST_TIMEOUT = 1200
  118. # Run tests using the go tool, and frob the output to look like that
  119. # generated by DejaGNU. The main output of this is two files:
  120. # gotools.sum and gotools.log.
  121. # check-head starts generating the log files in DejaGNU format. This
  122. # is a separate target so that the date is approximately when we start
  123. # running the tests.
  124. check-head:
  125. @echo "Test Run By $${USER} on `date`" > gotools.head
  126. @echo "Native configuration is $(host_triplet)" >> gotools.head
  127. @echo >> gotools.head
  128. @echo " === gotools tests ===" >> gotools.head
  129. @echo >> gotools.head
  130. # check-gccgo is a little shell script that executes gccgo with the
  131. # options to pick up the newly built libgo and libstdc++.
  132. check-gccgo: Makefile
  133. rm -f $@ $@.tmp
  134. echo "#!/bin/sh" > $@.tmp
  135. abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
  136. 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
  137. chmod +x $@.tmp
  138. mv -f $@.tmp $@
  139. # check-gcc is a little shell script that executes the newly built gcc
  140. # with the options to pick up the newly built libgo and libstdc++.
  141. check-gcc: Makefile
  142. rm -f $@ $@.tmp
  143. echo "#!/bin/sh" > $@.tmp
  144. abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
  145. 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
  146. chmod +x $@.tmp
  147. mv -f $@.tmp $@
  148. # CHECK_ENV sets up the environment to run the newly built go tool.
  149. # If you change this, change ECHO_ENV, below.
  150. # The fl shell variable is used to avoid having FAIL appear
  151. # in the log unnecessarily.
  152. CHECK_ENV = \
  153. PATH=`echo $(abs_builddir):$${PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \
  154. export PATH; \
  155. GCCGO="$(abs_builddir)/check-gccgo"; \
  156. export GCCGO; \
  157. CC="$(abs_builddir)/check-gcc"; \
  158. export CC; \
  159. GCCGOTOOLDIR="$(abs_builddir)"; \
  160. export GCCGOTOOLDIR; \
  161. GO_TESTING_GOTOOLS=yes; \
  162. export GO_TESTING_GOTOOLS; \
  163. abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
  164. LD_LIBRARY_PATH=`echo $${abs_libgodir}/.libs:$${LD_LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \
  165. export LD_LIBRARY_PATH; \
  166. GOROOT=$${abs_libgodir}; \
  167. export GOROOT; \
  168. GOCACHE=$(abs_builddir)/gocache-test; \
  169. export GOCACHE; \
  170. fl1="FA"; fl2="IL"; fl="$${fl1}$${fl2}";
  171. # ECHO_ENV is a variant of CHECK_ENV to put into a testlog file.
  172. # It assumes that abs_libgodir is set.
  173. 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'`
  174. # check-go-tool runs `go test cmd/go` in our environment.
  175. check-go-tool: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
  176. if test -d check-go-dir; then chmod -R u+w check-go-dir; fi
  177. rm -rf check-go-dir cmd_go-testlog
  178. $(MKDIR_P) check-go-dir/src/cmd/go
  179. cp $(libgosrcdir)/go.mod check-go-dir/src/
  180. cp $(cmdsrcdir)/go.mod check-go-dir/src/cmd/
  181. $(MKDIR_P) check-go-dir/src/vendor check-go-dir/src/cmd/vendor
  182. cp $(libgosrcdir)/vendor/modules.txt check-go-dir/src/vendor/
  183. cp $(libgosrcdir)/cmd/vendor/modules.txt check-go-dir/src/cmd/vendor/
  184. cp $(cmdsrcdir)/go/*.go check-go-dir/src/cmd/go/
  185. cp -r $(cmdsrcdir)/go/internal check-go-dir/src/cmd/go/
  186. cp $(libgodir)/zdefaultcc.go check-go-dir/src/cmd/go/internal/cfg/
  187. cp -r $(cmdsrcdir)/go/testdata check-go-dir/src/cmd/go/
  188. cp -r $(cmdsrcdir)/internal check-go-dir/src/cmd/
  189. $(MKDIR_P) check-go-dir/src/cmd/vendor/golang.org/x
  190. cp -r $(libgosrcdir)/golang.org/x/mod check-go-dir/src/cmd/vendor/golang.org/x/
  191. cp -r $(libgosrcdir)/golang.org/x/crypto check-go-dir/src/cmd/vendor/golang.org/x/
  192. cp -r $(libgosrcdir)/golang.org/x/xerrors check-go-dir/src/cmd/vendor/golang.org/x/
  193. cp -r $(libgosrcdir)/golang.org/x/tools check-go-dir/src/cmd/vendor/golang.org/x/
  194. cp $(libgodir)/objabi.go check-go-dir/src/cmd/internal/objabi/
  195. @abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
  196. abs_checkdir=`cd check-go-dir && $(PWD_COMMAND)`; \
  197. 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
  198. $(CHECK_ENV) \
  199. GOPATH=`cd check-go-dir && $(PWD_COMMAND)`; \
  200. export GOPATH; \
  201. (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
  202. grep '^--- ' cmd_go-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
  203. # check-runtime runs `go test runtime` in our environment.
  204. # The runtime package is also tested as part of libgo,
  205. # but the runtime tests use the go tool heavily, so testing
  206. # here too will catch more problems.
  207. check-runtime: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
  208. rm -f runtime-testlog
  209. @abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
  210. LD_LIBRARY_PATH=`echo $${abs_libgodir}/.libs:$${LD_LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \
  211. export LD_LIBRARY_PATH; \
  212. GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \
  213. GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \
  214. 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`; \
  215. 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
  216. $(CHECK_ENV) \
  217. GC="$${GCCGO} -fgo-compiling-runtime"; \
  218. export GC; \
  219. GOARCH=`$(abs_builddir)/go$(EXEEXT) env GOARCH`; \
  220. GOOS=`$(abs_builddir)/go$(EXEEXT) env GOOS`; \
  221. 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`; \
  222. $(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
  223. grep '^--- ' runtime-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
  224. # check-cgo-test runs `go test` in misc/cgo/test.
  225. check-cgo-test: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
  226. rm -rf cgo-test-dir cgo-testlog
  227. $(MKDIR_P) cgo-test-dir/misc/cgo
  228. echo 'module misc' > cgo-test-dir/misc/go.mod
  229. cp -r $(libgomiscdir)/cgo/test cgo-test-dir/misc/cgo/
  230. @abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
  231. 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
  232. $(CHECK_ENV) \
  233. GOTRACEBACK=2; \
  234. export GOTRACEBACK; \
  235. (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
  236. grep '^--- ' cgo-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
  237. # check-carchive-test runs `go test` in misc/cgo/testcarchive.
  238. # in our environment.
  239. check-carchive-test: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
  240. rm -rf carchive-test-dir carchive-testlog
  241. $(MKDIR_P) carchive-test-dir/misc/cgo
  242. echo 'module misc' > carchive-test-dir/misc/go.mod
  243. cp -r $(libgomiscdir)/cgo/testcarchive carchive-test-dir/misc/cgo/
  244. @abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
  245. 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
  246. $(CHECK_ENV) \
  247. LIBRARY_PATH=`echo $${abs_libgodir}/.libs:$${LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \
  248. export LIBRARY_PATH; \
  249. (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
  250. grep '^--- ' carchive-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
  251. # check-vet runs `go test cmd/vet` in our environment.
  252. check-vet: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
  253. rm -rf check-vet-dir cmd_vet-testlog
  254. $(MKDIR_P) check-vet-dir/src/cmd/internal check-vet-dir/src/cmd/vendor/golang.org/x
  255. cp $(libgosrcdir)/go.mod check-vet-dir/src/
  256. cp $(cmdsrcdir)/go.mod check-vet-dir/src/cmd/
  257. $(MKDIR_P) check-vet-dir/src/vendor check-vet-dir/src/cmd/vendor
  258. cp $(libgosrcdir)/vendor/modules.txt check-vet-dir/src/vendor/
  259. cp $(libgosrcdir)/cmd/vendor/modules.txt check-vet-dir/src/cmd/vendor/
  260. cp -r $(cmdsrcdir)/vet check-vet-dir/src/cmd/
  261. cp -r $(cmdsrcdir)/internal/objabi check-vet-dir/src/cmd/internal
  262. cp $(libgodir)/objabi.go check-vet-dir/src/cmd/internal/objabi/
  263. cp -r $(libgosrcdir)/golang.org/x/tools check-vet-dir/src/cmd/vendor/golang.org/x/
  264. @abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
  265. abs_checkdir=`cd check-vet-dir && $(PWD_COMMAND)`; \
  266. 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
  267. $(CHECK_ENV) \
  268. GOPATH=`cd check-vet-dir && $(PWD_COMMAND)`; \
  269. export GOPATH; \
  270. (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
  271. grep '^--- ' cmd_vet-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
  272. # check-embed runs `go test embed/internal/embedtest` in our environment.
  273. check-embed: go$(EXEEXT) $(noinst_PROGRAMS) check-head check-gccgo check-gcc
  274. rm -rf check-embed-dir embed-testlog
  275. $(MKDIR_P) check-embed-dir/src/embed/internal
  276. cp $(libgosrcdir)/go.mod check-embed-dir/src/
  277. $(MKDIR_P) check-embed-dir/src/vendor
  278. cp $(libgosrcdir)/vendor/modules.txt check-embed-dir/src/vendor/
  279. cp -r $(libgosrcdir)/embed/internal/embedtest check-embed-dir/src/embed/internal
  280. @abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \
  281. abs_checkdir=`cd check-embed-dir && $(PWD_COMMAND)`; \
  282. 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
  283. $(CHECK_ENV) \
  284. GOPATH=`cd check-embed-dir && $(PWD_COMMAND)`; \
  285. export GOPATH; \
  286. (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
  287. grep '^--- ' embed-testlog | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' | sort -k 2
  288. # The check targets runs the tests and assembles the output files.
  289. check: check-head check-go-tool check-runtime check-cgo-test check-carchive-test check-vet check-embed
  290. @mv gotools.head gotools.sum
  291. @cp gotools.sum gotools.log
  292. @for file in cmd_go-testlog runtime-testlog cgo-testlog carchive-testlog cmd_vet-testlog embed-testlog; do \
  293. testname=`echo $${file} | sed -e 's/-testlog//' -e 's|_|/|'`; \
  294. echo "Running $${testname}" >> gotools.sum; \
  295. echo "Running $${testname}" >> gotools.log; \
  296. sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' < $${file} >> gotools.log; \
  297. grep '^--- ' $${file} | sed -e 's/^--- \(.*\) ([^)]*)$$/\1/' -e 's/SKIP/UNTESTED/' | sort -k 2 >> gotools.sum; \
  298. done
  299. @echo >> gotools.sum
  300. @echo " === gotools Summary ===" >> gotools.sum
  301. @pass=`grep -c '^PASS' gotools.sum`; \
  302. if test "$${pass}" -ne "0"; then \
  303. echo "# of expected passes $${pass}" >> gotools.sum; \
  304. fi
  305. @fail=`grep -c '^FAIL' gotools.sum`; \
  306. if test "$${fail}" -ne "0"; then \
  307. echo "# of unexpected failures $${fail}" >> gotools.sum; \
  308. fi
  309. @untested=`grep -c '^UNTESTED' gotools.sum`; \
  310. if test "$${untested}" -ne "0"; then \
  311. echo "# of untested testcases $${untested}" >> gotools.sum; \
  312. fi
  313. @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
  314. @echo >> gotools.log
  315. @echo "runtest completed at `date`" >> gotools.log
  316. @if grep '^FAIL' gotools.sum >/dev/null 2>&1; then exit 1; fi
  317. .PHONY: check check-head check-go-tool check-runtime check-cgo-test
  318. .PHONY: check-carchive-test check-vet check-embed
  319. else
  320. # For a non-native build we have to build the programs using a
  321. # previously built host (or build -> host) Go compiler. We should
  322. # only do this if such a compiler is available. We also need to get
  323. # the right values for GOARCH and GOOS in the default build context in
  324. # the go/build package. Figure this out later.
  325. endif