diff libgo/Makefile.am @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
line wrap: on
line diff
--- a/libgo/Makefile.am	Fri Oct 27 22:46:09 2017 +0900
+++ b/libgo/Makefile.am	Thu Oct 25 07:37:49 2018 +0900
@@ -40,7 +40,7 @@
 
 ACLOCAL_AMFLAGS = -I ./config -I ../config
 
-AM_CFLAGS = -fexceptions -fnon-call-exceptions -fplan9-extensions \
+AM_CFLAGS = -fexceptions -fnon-call-exceptions \
 	$(SPLIT_STACK) $(WARN_CFLAGS) \
 	$(STRINGOPS_FLAG) $(HWCAP_CFLAGS) $(OSCFLAGS) \
 	-I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \
@@ -235,12 +235,6 @@
 	encoding/pem.gox \
 	encoding/xml.gox
 
-toolexeclibgoexpdir = $(toolexeclibgodir)/exp
-
-toolexeclibgoexp_DATA = \
-	exp/proxy.gox \
-	exp/terminal.gox
-
 toolexeclibgogodir = $(toolexeclibgodir)/go
 
 toolexeclibgogo_DATA = \
@@ -400,8 +394,13 @@
 # internal packages nothing will explicitly depend on them.
 # Force them to be built.
 noinst_DATA = \
+	golang_org/x/net/internal/nettest.gox \
+	golang_org/x/net/nettest.gox \
 	internal/testenv.gox \
-	net/internal/socktest.gox
+	internal/trace.gox \
+	net/internal/socktest.gox \
+	os/signal/internal/pty.gox \
+	runtime/pprof/internal/profile.gox
 
 if LIBGO_IS_RTEMS
 rtems_task_variable_add_file = runtime/rtems-task-variable-add.c
@@ -482,7 +481,7 @@
 s-version: Makefile
 	rm -f version.go.tmp
 	echo "package sys" > version.go.tmp
-	echo 'const DefaultGoroot = "$(prefix)"' >> version.go.tmp
+	echo 'func init() { DefaultGoroot = "$(prefix)" }' >> version.go.tmp
 	echo 'const TheVersion = "'`cat $(srcdir)/VERSION | sed 1q`' '`$(GOC) --version | sed 1q`'"' >> version.go.tmp
 	echo 'const Goexperiment = ``' >> version.go.tmp
 	echo 'const GOARCH = "'$(GOARCH)'"' >> version.go.tmp
@@ -509,14 +508,14 @@
 	done
 	echo >> version.go.tmp
 	echo "const (" >> version.go.tmp
-	echo "	ArchFamily = $(GOARCH_FAMILY)" >> version.go.tmp
-	echo "	BigEndian = $(GOARCH_BIGENDIAN)" >> version.go.tmp
-	echo "	CacheLineSize = $(GOARCH_CACHELINESIZE)" >> version.go.tmp
-	echo "	PhysPageSize = $(GOARCH_PHYSPAGESIZE)" >> version.go.tmp
-	echo "	PCQuantum = $(GOARCH_PCQUANTUM)" >> version.go.tmp
-	echo "	Int64Align = $(GOARCH_INT64ALIGN)" >> version.go.tmp
-	echo "	HugePageSize = $(GOARCH_HUGEPAGESIZE)" >> version.go.tmp
-	echo "	MinFrameSize = $(GOARCH_MINFRAMESIZE)" >> version.go.tmp
+	echo "  ArchFamily = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) family`" >> version.go.tmp
+	echo "  BigEndian = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) bigendian`" >> version.go.tmp
+	echo "  CacheLineSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) cachelinesize`" >> version.go.tmp
+	echo "  DefaultPhysPageSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) defaultphyspagesize`" >> version.go.tmp
+	echo "  HugePageSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) hugepagesize`" >> version.go.tmp
+	echo "  Int64Align = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) int64align`" >> version.go.tmp
+	echo "  MinFrameSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) minframesize`" >> version.go.tmp
+	echo "  PCQuantum = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) pcquantum`" >> version.go.tmp
 	echo ")" >> version.go.tmp
 	echo >> version.go.tmp
 	for a in $(ALLGOOS); do \
@@ -533,6 +532,48 @@
 	$(SHELL) $(srcdir)/mvifdiff.sh version.go.tmp version.go
 	$(STAMP) $@
 
+cpugen.go: s-cpu; @true
+s-cpu: Makefile
+	rm -f cpugen.go.tmp
+	echo "package cpu" > cpugen.go.tmp
+	echo "const CacheLineSize = `$(SHELL) $(srcdir)/goarch.sh $(GOARCH) cachelinesize`" >> cpugen.go.tmp
+	$(SHELL) $(srcdir)/mvifdiff.sh cpugen.go.tmp cpugen.go
+	$(STAMP) $@
+
+objabi.go: s-objabi; @true
+s-objabi: Makefile
+	rm -f objabi.go.tmp
+	echo "package objabi" > objabi.go.tmp
+	echo "import \"runtime\"" >> objabi.go.tmp
+	echo 'func init() { defaultGOROOT = `$(prefix)` }' >> objabi.go.tmp
+	echo 'const defaultGO386 = `sse2`' >> objabi.go.tmp
+	echo 'const defaultGOARM = `5`' >> objabi.go.tmp
+	echo 'const defaultGOMIPS = `hardfloat`' >> objabi.go.tmp
+	echo 'const defaultGOMIPS64 = `hardfloat`' >> objabi.go.tmp
+	echo 'const defaultGOOS = runtime.GOOS' >> objabi.go.tmp
+	echo 'const defaultGOARCH = runtime.GOARCH' >> objabi.go.tmp
+	echo 'const defaultGO_EXTLINK_ENABLED = ``' >> objabi.go.tmp
+	echo 'const version = `'`cat $(srcdir)/VERSION | sed 1q`' '`$(GOC) --version | sed 1q`'`' >> objabi.go.tmp
+	echo 'const stackGuardMultiplier = 1' >> objabi.go.tmp
+	echo 'const goexperiment = ``' >> objabi.go.tmp
+	$(SHELL) $(srcdir)/mvifdiff.sh objabi.go.tmp objabi.go
+	$(STAMP) $@
+
+gccgosizes.go: s-gccgosizes; @true
+s-gccgosizes: Makefile goarch.sh
+	rm -f gccgosizes.go.tmp
+	echo "package types" > gccgosizes.go.tmp
+	echo >> gccgosizes.go.tmp
+	echo "var gccgoArchSizes = map[string]*StdSizes{" >> gccgosizes.go.tmp
+	for a in $(ALLGOARCH); do \
+	  ptrsize=`$(SHELL) $(srcdir)/goarch.sh $$a ptrsize`; \
+	  maxalign=`$(SHELL) $(srcdir)/goarch.sh $$a maxalign`; \
+	  echo "	\"$$a\": {$${ptrsize}, $${maxalign}}," >> gccgosizes.go.tmp; \
+	done
+	echo "}" >> gccgosizes.go.tmp
+	$(SHELL) $(srcdir)/mvifdiff.sh gccgosizes.go.tmp gccgosizes.go
+	$(STAMP) $@
+
 runtime_sysinfo.go: s-runtime_sysinfo; @true
 s-runtime_sysinfo: $(srcdir)/mkrsysinfo.sh gen-sysinfo.go
 	GOARCH=$(GOARCH) GOOS=$(GOOS) $(SHELL) $(srcdir)/mkrsysinfo.sh
@@ -553,41 +594,30 @@
 s-zdefaultcc: Makefile
 	echo 'package cfg' > zdefaultcc.go.tmp
 	echo >> zdefaultcc.go.tmp
-	echo 'const DefaultGCCGO = "$(bindir)/$(GCCGO_INSTALL_NAME)"' >> zdefaultcc.go.tmp
-	echo 'const DefaultCC = "$(GCC_INSTALL_NAME)"' >> zdefaultcc.go.tmp
-	echo 'const DefaultCXX = "$(GXX_INSTALL_NAME)"' >> 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
+	echo 'var OSArchSupportsCgo = map[string]bool{}' >> zdefaultcc.go.tmp
 	$(SHELL) $(srcdir)/../move-if-change zdefaultcc.go.tmp zdefaultcc.go
 	$(STAMP) $@ 
 
-# _Complex_lock and _Reader_lock are Go translations of some AIX system
-# types and should not be exported back to C
-# semt is a Go translation of the C type sem_t; it fails to convert on
-# some systems and need not be exported back to C.
-# sigset conflicts with system type sigset on AIX, so we need to rename it
+# Post-process runtime.inc.raw (raw output of -fgo-c-header option when
+# compiling runtime) to prune out certain types that should not be
+# exported back to C. See comments in mkruntimeinc.sh for more details.
 runtime.inc: s-runtime-inc; @true
 s-runtime-inc: runtime.lo Makefile
-	rm -f runtime.inc.tmp2 runtime.inc.tmp3
-	grep -v "#define _" runtime.inc.tmp | grep -v "#define [cm][01234] " | grep -v "#define empty " > runtime.inc.tmp2
-	for pattern in '_[GP][a-z]' _Max _Lock _Sig _Trace _MHeap _Num; do \
-	  grep "#define $$pattern" runtime.inc.tmp >> runtime.inc.tmp2; \
-	done
-	for TYPE in _Complex_lock _Reader_lock semt; do \
-	  sed -e '/struct '$${TYPE}' {/,/^}/s/^.*$$//' runtime.inc.tmp2 > runtime.inc.tmp3; \
-	  mv runtime.inc.tmp3 runtime.inc.tmp2; \
-	done
-	sed -e 's/sigset/sigset_go/' runtime.inc.tmp2 > runtime.inc.tmp3
-	$(SHELL) $(srcdir)/mvifdiff.sh runtime.inc.tmp3 runtime.inc
-	rm -f runtime.inc.tmp2 runtime.inc.tmp3
+	$(SHELL) $(srcdir)/mkruntimeinc.sh
+	$(SHELL) $(srcdir)/mvifdiff.sh tmp-runtime.inc runtime.inc
 	$(STAMP) $@
 
-noinst_DATA += zstdpkglist.go zdefaultcc.go
+noinst_DATA += zdefaultcc.go
 
 # Generate the list of go std packages that were included in libgo
 zstdpkglist.go: s-zstdpkglist; @true
 s-zstdpkglist: Makefile
 	rm -f zstdpkglist.go.tmp
-	echo 'package load' > zstdpkglist.go.tmp
+	echo 'package goroot' > zstdpkglist.go.tmp
 	echo "" >> zstdpkglist.go.tmp
 	echo 'var stdpkg = map[string]bool{' >> zstdpkglist.go.tmp
 	echo $(libgo_go_objs) 'unsafe.lo' 'runtime/cgo.lo' | sed 's|[a-z0-9_/]*_c\.lo||g' | sed 's|\([a-z0-9_/]*\)\.lo|"\1": true,|g' >> zstdpkglist.go.tmp
@@ -643,7 +673,7 @@
 
 sysinfo.go: s-sysinfo; @true
 s-sysinfo: $(srcdir)/mksysinfo.sh gen-sysinfo.go errno.i
-	GOOS=$(GOOS) $(SHELL) $(srcdir)/mksysinfo.sh
+	GOARCH=$(GOARCH) GOOS=$(GOOS) $(SHELL) $(srcdir)/mksysinfo.sh
 	$(SHELL) $(srcdir)/mvifdiff.sh tmp-sysinfo.go sysinfo.go
 	$(STAMP) $@
 
@@ -681,184 +711,12 @@
 syscall_lib_clone_lo =
 endif
 
-PACKAGES = \
-	archive/tar \
-	archive/zip \
-	bufio \
-	bytes \
-	compress/bzip2 \
-	compress/flate \
-	compress/gzip \
-	compress/lzw \
-	compress/zlib \
-	container/heap \
-	container/list \
-	container/ring \
-	context \
-	crypto \
-	crypto/aes \
-	crypto/cipher \
-	crypto/des \
-	crypto/dsa \
-	crypto/ecdsa \
-	crypto/elliptic \
-	crypto/hmac \
-	crypto/internal/cipherhw \
-	crypto/md5 \
-	crypto/rand \
-	crypto/rc4 \
-	crypto/rsa \
-	crypto/sha1 \
-	crypto/sha256 \
-	crypto/sha512 \
-	crypto/subtle \
-	crypto/tls \
-	crypto/x509 \
-	crypto/x509/pkix \
-	database/sql \
-	database/sql/driver \
-	debug/dwarf \
-	debug/elf \
-	debug/gosym \
-	debug/macho \
-	debug/pe \
-	debug/plan9obj \
-	debug/xcoff \
-	encoding \
-	encoding/ascii85 \
-	encoding/asn1 \
-	encoding/base32 \
-	encoding/base64 \
-	encoding/binary \
-	encoding/csv \
-	encoding/gob \
-	encoding/hex \
-	encoding/json \
-	encoding/pem \
-	encoding/xml \
-	errors \
-	exp/proxy \
-	exp/terminal \
-	expvar \
-	flag \
-	fmt \
-	go/ast \
-	go/build \
-	go/constant \
-	go/doc \
-	go/format \
-	go/importer \
-	go/internal/gccgoimporter \
-	go/internal/gcimporter \
-	go/internal/srcimporter \
-	go/parser \
-	go/printer \
-	go/scanner \
-	go/token \
-	go/types \
-	golang_org/x/crypto/chacha20poly1305 \
-	golang_org/x/crypto/chacha20poly1305/internal/chacha20 \
-	golang_org/x/crypto/curve25519 \
-	golang_org/x/crypto/poly1305 \
-	golang_org/x/net/http2/hpack \
-	golang_org/x/net/idna \
-	golang_org/x/net/lex/httplex \
-	golang_org/x/net/proxy \
-	golang_org/x/text/secure/bidirule \
-	golang_org/x/text/transform \
-	golang_org/x/text/unicode/bidi \
-	golang_org/x/text/unicode/norm \
-	golang_org/x/text/width \
-	hash \
-	hash/adler32 \
-	hash/crc32 \
-	hash/crc64 \
-	hash/fnv \
-	html \
-	html/template \
-	image \
-	image/color \
-	image/color/palette \
-	image/draw \
-	image/gif \
-	image/internal/imageutil \
-	image/jpeg \
-	image/png \
-	index/suffixarray \
-	internal/nettrace \
-	internal/poll \
-	internal/race \
-	internal/singleflight \
-	internal/syscall/unix \
-	internal/testenv \
-	internal/trace \
-	io \
-	io/ioutil \
-	log \
-	log/syslog \
-	math \
-	math/big \
-	math/bits \
-	math/cmplx \
-	math/rand \
-	mime \
-	mime/multipart \
-	mime/quotedprintable \
-	net \
-	net/http \
-	net/http/cgi \
-	net/http/cookiejar \
-	net/http/fcgi \
-	net/http/httptest \
-	net/http/httptrace \
-	net/http/httputil \
-	net/http/internal \
-	net/http/pprof \
-	net/internal/socktest \
-	net/mail \
-	net/rpc \
-	net/rpc/jsonrpc \
-	net/smtp \
-	net/textproto \
-	net/url \
-	os \
-	os/exec \
-	os/signal \
-	os/user \
-	path \
-	path/filepath \
-	reflect \
-	regexp \
-	regexp/syntax \
-	runtime \
-	runtime/debug \
-	runtime/internal/atomic \
-	runtime/internal/sys \
-	runtime/pprof \
-	runtime/pprof/internal/profile \
-	runtime/trace \
-	sort \
-	strconv \
-	strings \
-	sync \
-	sync/atomic \
-	syscall \
-	testing \
-	testing/internal/testdeps \
-	testing/iotest \
-	testing/quick \
-	text/scanner \
-	text/tabwriter \
-	text/template \
-	text/template/parse \
-	time \
-	unicode \
-	unicode/utf16 \
-	unicode/utf8
+PACKAGES = $(shell cat $(srcdir)/libgo-packages.txt)
 
 libgo_go_objs = \
 	$(addsuffix .lo,$(PACKAGES)) \
 	bytes/index.lo \
+	internal/bytealg/bytealg.lo \
 	reflect/makefunc_ffi_c.lo \
 	strings/index.lo \
 	$(syscall_lib_clone_lo) \
@@ -870,7 +728,8 @@
 	log/syslog/syslog_c.lo \
 	$(os_lib_inotify_lo) \
 	runtime/internal/atomic_c.lo \
-	sync/atomic_c.lo
+	sync/atomic_c.lo \
+	internal/cpu/cpu_gccgo.lo
 
 libgo_ldflags = \
 	-version-info $(libtool_VERSION) $(PTHREAD_CFLAGS) $(AM_LDFLAGS)
@@ -902,32 +761,7 @@
 
 libgolibbegin_a_CFLAGS = $(AM_CFLAGS) -fPIC
 
-GOTOOL_PACKAGES = \
-	cmd/go/internal/base \
-	cmd/go/internal/bug \
-	cmd/go/internal/buildid \
-	cmd/go/internal/cfg \
-	cmd/go/internal/clean \
-	cmd/go/internal/cmdflag \
-	cmd/go/internal/doc \
-	cmd/go/internal/envcmd \
-	cmd/go/internal/fix \
-	cmd/go/internal/fmtcmd \
-	cmd/go/internal/generate \
-	cmd/go/internal/get \
-	cmd/go/internal/help \
-	cmd/go/internal/list \
-	cmd/go/internal/load \
-	cmd/go/internal/run \
-	cmd/go/internal/str \
-	cmd/go/internal/test \
-	cmd/go/internal/tool \
-	cmd/go/internal/version \
-	cmd/go/internal/vet \
-	cmd/go/internal/web \
-	cmd/go/internal/work \
-	cmd/internal/browser \
-	cmd/internal/objabi
+GOTOOL_PACKAGES = $(shell cat $(srcdir)/gotool-packages.txt)
 
 libgotool_a_SOURCES =
 libgotool_a_DEPENDENCIES = $(addsuffix .lo,$(GOTOOL_PACKAGES))
@@ -1001,7 +835,7 @@
 	export MAKE; \
 	NM="$(NM)"; \
 	export NM; \
-	libgccdir=`${GOC} -print-libgcc-file-name | sed -e 's|/[^/]*$$||'`; \
+	libgccdir=`${GOC} ${GOCFLAGS} -print-libgcc-file-name | sed -e 's|/[^/]*$$||'`; \
 	LD_LIBRARY_PATH="`${PWD_COMMAND}`/.libs:$${libgccdir}:${LD_LIBRARY_PATH}"; \
 	LD_LIBRARY_PATH=`echo $${LD_LIBRARY_PATH} | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; \
 	export LD_LIBRARY_PATH; \
@@ -1034,7 +868,6 @@
 	$(toolexeclibgocrypto_DATA) \
 	$(toolexeclibgodebug_DATA) \
 	$(toolexeclibgoencoding_DATA) \
-	$(toolexeclibgoexp_DATA) \
 	$(toolexeclibgogo_DATA) \
 	$(toolexeclibgohash_DATA) \
 	$(toolexeclibgoimage_DATA) \
@@ -1054,6 +887,7 @@
 	$(toolexeclibgotext_DATA) \
 	$(toolexeclibgotexttemplate_DATA) \
 	$(toolexeclibgounicode_DATA) \
+	$(noinst_DATA) \
 	$(noinst_LIBRARIES)
 
 if GOC_IS_LLGO
@@ -1099,6 +933,7 @@
 # Pass -ffp-contract=off, or 386-specific options, when building the
 # math package.  MATH_FLAG is defined in configure.ac.
 math_lo_GOCFLAGS = $(MATH_FLAG)
+math_check_GOCFLAGS = $(MATH_FLAG)
 
 # Add the generated file runtime_sysinfo.go to the runtime package.
 extra_go_files_runtime = runtime_sysinfo.go sigtab.go
@@ -1113,7 +948,7 @@
 syscall.lo.dep: $(extra_go_files_syscall)
 
 # Pass -fgo-compiling-runtime when compiling the runtime package.
-runtime_lo_GOCFLAGS = -fgo-c-header=runtime.inc.tmp -fgo-compiling-runtime
+runtime_lo_GOCFLAGS = -fgo-c-header=runtime.inc.raw -fgo-compiling-runtime
 runtime_check_GOCFLAGS = -fgo-compiling-runtime
 runtime_internal_atomic_lo_GOCFLAGS = -fgo-compiling-runtime
 runtime_internal_atomic_lo_check_GOCFLAGS = -fgo-compiling-runtime
@@ -1136,17 +971,39 @@
 extra_go_files_runtime_internal_sys = version.go
 runtime/internal/sys.lo.dep: $(extra_go_files_runtime_internal_sys)
 
+extra_go_files_internal_cpu = cpugen.go
+internal/cpu.lo.dep: $(extra_go_files_internal_cpu)
+
+extra_go_files_internal_goroot = zstdpkglist.go
+internal/goroot.lo.dep: $(extra_go_files_internal_goroot)
+
+extra_go_files_go_types = gccgosizes.go
+go/types.lo.dep: $(extra_go_files_go_types)
+
+extra_go_files_cmd_internal_objabi = objabi.go
+cmd/internal/objabi.lo.dep: $(extra_go_files_cmd_internal_objabi)
+
 extra_go_files_cmd_go_internal_cfg = zdefaultcc.go
 cmd/go/internal/cfg.lo.dep: $(extra_go_files_cmd_go_internal_cfg)
 
-extra_go_files_cmd_go_internal_load = zstdpkglist.go
-cmd/go/internal/load.lo.dep: $(extra_go_files_cmd_go_internal_load)
-
+extra_check_libs_cmd_go_internal_cache = $(abs_builddir)/libgotool.a
 extra_check_libs_cmd_go_internal_generate = $(abs_builddir)/libgotool.a
 extra_check_libs_cmd_go_internal_get = $(abs_builddir)/libgotool.a
 extra_check_libs_cmd_go_internal_load = $(abs_builddir)/libgotool.a
+extra_check_libs_cmd_go_internal_imports = $(abs_builddir)/libgotool.a
+extra_check_libs_cmd_go_internal_modconv = $(abs_builddir)/libgotool.a
+extra_check_libs_cmd_go_internal_modfetch = $(abs_builddir)/libgotool.a
+extra_check_libs_cmd_go_internal_modfetch_codehost = $(abs_builddir)/libgotool.a
+extra_check_libs_cmd_go_internal_modfile = $(abs_builddir)/libgotool.a
+extra_check_libs_cmd_go_internal_modload = $(abs_builddir)/libgotool.a
+extra_check_libs_cmd_go_internal_module = $(abs_builddir)/libgotool.a
+extra_check_libs_cmd_go_internal_mvs = $(abs_builddir)/libgotool.a
+extra_check_libs_cmd_go_internal_search = $(abs_builddir)/libgotool.a
+extra_check_libs_cmd_go_internal_web2 = $(abs_builddir)/libgotool.a
 extra_check_libs_cmd_go_internal_work = $(abs_builddir)/libgotool.a
 
+extra_check_libs_cmd_vet_internal_cfg = $(abs_builddir)/libgotool.a
+
 # FIXME: The following C files may as well move to the runtime
 # directory and be treated like other C files.
 
@@ -1157,6 +1014,9 @@
 strings/index.lo: go/strings/indexbyte.c runtime.inc
 	@$(MKDIR_P) strings
 	$(LTCOMPILE) -c -o $@ $(srcdir)/go/strings/indexbyte.c
+internal/bytealg/bytealg.lo: go/internal/bytealg/bytealg.c runtime.inc
+	@$(MKDIR_P) internal/bytealg
+	$(LTCOMPILE) -c -o $@ $(srcdir)/go/internal/bytealg/bytealg.c
 
 # Use a C function with a fixed number of arguments to call a C
 # varargs function.
@@ -1191,7 +1051,12 @@
 	@$(MKDIR_P) syscall
 	$(LTCOMPILE) -c -o $@ $(srcdir)/go/syscall/wait.c
 
-# Solaris 12 changed the type of fields in struct stat.
+# internal/cpu needs some C code.
+internal/cpu/cpu_gccgo.lo: go/internal/cpu/cpu_gccgo.c runtime.inc
+	@$(MKDIR_P) internal/cpu
+	$(LTCOMPILE) -c -o $@ $(srcdir)/go/internal/cpu/cpu_gccgo.c
+
+# Solaris 11.4 changed the type of fields in struct stat.
 # Use a build tag, based on a configure check, to cope.
 if LIBGO_IS_SOLARIS
 if HAVE_STAT_TIMESPEC
@@ -1229,164 +1094,10 @@
 
 endif
 
-TEST_PACKAGES = \
-	bufio/check \
-	bytes/check \
-	context/check \
-	errors/check \
-	expvar/check \
-	flag/check \
-	fmt/check \
-	html/check \
-	image/check \
-	io/check \
-	log/check \
-	math/check \
-	mime/check \
-	net/check \
-	os/check \
-	path/check \
-	reflect/check \
-	regexp/check \
-	runtime/check \
-	sort/check \
-	strconv/check \
-	strings/check \
-	sync/check \
-	syscall/check \
-	time/check \
-	unicode/check \
-	archive/tar/check \
-	archive/zip/check \
-	cmd/go/internal/generate/check \
-	cmd/go/internal/get/check \
-	cmd/go/internal/load/check \
-	cmd/go/internal/work/check \
-	cmd/internal/objabi/check \
-	compress/bzip2/check \
-	compress/flate/check \
-	compress/gzip/check \
-	compress/lzw/check \
-	compress/zlib/check \
-	container/heap/check \
-	container/list/check \
-	container/ring/check \
-	crypto/aes/check \
-	crypto/cipher/check \
-	crypto/des/check \
-	crypto/dsa/check \
-	crypto/ecdsa/check \
-	crypto/elliptic/check \
-	crypto/hmac/check \
-	crypto/md5/check \
-	crypto/rand/check \
-	crypto/rc4/check \
-	crypto/rsa/check \
-	crypto/sha1/check \
-	crypto/sha256/check \
-	crypto/sha512/check \
-	crypto/subtle/check \
-	crypto/tls/check \
-	crypto/x509/check \
-	database/sql/check \
-	database/sql/driver/check \
-	debug/dwarf/check \
-	debug/elf/check \
-	debug/macho/check \
-	debug/pe/check \
-	debug/plan9obj/check \
-	debug/xcoff/check \
-	encoding/ascii85/check \
-	encoding/asn1/check \
-	encoding/base32/check \
-	encoding/base64/check \
-	encoding/binary/check \
-	encoding/csv/check \
-	encoding/gob/check \
-	encoding/hex/check \
-	encoding/json/check \
-	encoding/pem/check \
-	encoding/xml/check \
-	exp/proxy/check \
-	exp/terminal/check \
-	html/template/check \
-	go/ast/check \
-	go/build/check \
-	go/constant/check \
-	go/doc/check \
-	go/format/check \
-	go/internal/gcimporter/check \
-	go/internal/gccgoimporter/check \
-	go/internal/srcimporter/check \
-	go/parser/check \
-	go/printer/check \
-	go/scanner/check \
-	go/token/check \
-	go/types/check \
-	golang_org/x/crypto/chacha20poly1305/check \
-	golang_org/x/crypto/chacha20poly1305/internal/chacha20/check \
-	golang_org/x/crypto/curve25519/check \
-	golang_org/x/crypto/poly1305/check \
-	golang_org/x/net/http2/hpack/check \
-	golang_org/x/net/idna/check \
-	golang_org/x/net/lex/httplex/check \
+TPACKAGES = $(shell cat $(srcdir)/check-packages.txt)
+TEST_PACKAGES = $(addsuffix /check,$(TPACKAGES)) \
 	$(golang_org_x_net_lif_check) \
-	golang_org/x/net/proxy/check \
-	$(golang_org_x_net_route_check) \
-	hash/adler32/check \
-	hash/crc32/check \
-	hash/crc64/check \
-	hash/fnv/check \
-	image/color/check \
-	image/draw/check \
-	image/jpeg/check \
-	image/png/check \
-	index/suffixarray/check \
-	internal/poll/check \
-	internal/singleflight/check \
-	internal/trace/check \
-	io/ioutil/check \
-	log/syslog/check \
-	math/big/check \
-	math/bits/check \
-	math/cmplx/check \
-	math/rand/check \
-	mime/multipart/check \
-	mime/quotedprintable/check \
-	net/http/check \
-	net/http/cgi/check \
-	net/http/cookiejar/check \
-	net/http/fcgi/check \
-	net/http/httptest/check \
-	net/http/httptrace/check \
-	net/http/httputil/check \
-	net/http/internal/check \
-	net/internal/socktest/check \
-	net/mail/check \
-	net/rpc/check \
-	net/smtp/check \
-	net/textproto/check \
-	net/url/check \
-	net/rpc/jsonrpc/check \
-	os/exec/check \
-	os/signal/check \
-	os/user/check \
-	path/filepath/check \
-	regexp/syntax/check \
-	runtime/debug/check \
-	runtime/internal/atomic/check \
-	runtime/internal/sys/check \
-	runtime/pprof/check \
-	runtime/pprof/internal/profile/check \
-	runtime/trace/check \
-	sync/atomic/check \
-	text/scanner/check \
-	text/tabwriter/check \
-	text/template/check \
-	text/template/parse/check \
-	testing/quick/check \
-	unicode/utf16/check \
-	unicode/utf8/check
+	$(golang_org_x_net_route_check)
 
 check: check-tail
 check-recursive: check-head
@@ -1474,7 +1185,7 @@
 	@for f in $(TEST_PACKAGES); do \
 	   rm -f $$f-testsum $$f-testlog; \
 	 done
-	-@$(MAKE) -k $(TEST_PACKAGES)
+	-@$(MAKE) $(AM_MAKEFLAGS) -k $(TEST_PACKAGES)
 	@for f in $(TEST_PACKAGES); do \
 	  if test -f $$f-testsum; then \
 	    cat $$f-testsum >> libgo.sum; \
@@ -1488,7 +1199,7 @@
 	$(MULTIDO) $(AM_MAKEFLAGS) DO=check-am multi-do # $(MAKE)
 
 bench:
-	-@$(MAKE) -k $(TEST_PACKAGES) GOBENCH=.
+	-@$(MAKE) $(AM_MAKEFLAGS) -k $(TEST_PACKAGES) GOBENCH=.
 
 MOSTLYCLEANFILES = \
 	s-runtime_sysinfo s-sigtab s-runtime-inc s-zstdpkglist \