# Makefile.am -- Go library Makefile.

# Copyright 2009 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

# Process this file with autoreconf to produce Makefile.in.

# Go support.
SUFFIXES = .c .go .gox .o .obj .lo .a

if LIBGO_IS_RTEMS
subdirs = testsuite
endif

SUBDIRS = ${subdirs}

gcc_version := $(shell $(GOC) -dumpversion)

MAINT_CHARSET = latin1

mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
PWD_COMMAND = $${PWDCMD-pwd}
STAMP = echo timestamp >

toolexecdir = $(glibgo_toolexecdir)
toolexeclibdir = $(glibgo_toolexeclibdir)
toolexeclibgodir = $(nover_glibgo_toolexeclibdir)/go/$(gcc_version)/$(target_alias)
libexecsubdir = $(libexecdir)/gcc/$(target_alias)/$(gcc_version)

LIBFFI = @LIBFFI@
LIBFFIINCS = @LIBFFIINCS@

LIBATOMIC = @LIBATOMIC@

WARN_CFLAGS = $(WARN_FLAGS) $(WERROR)

# -I/-D flags to pass when compiling.
AM_CPPFLAGS = -I $(srcdir)/runtime $(LIBFFIINCS) $(PTHREAD_CFLAGS)

ACLOCAL_AMFLAGS = -I ./config -I ../config

AM_CFLAGS = -fexceptions -fnon-call-exceptions -fplan9-extensions \
	$(SPLIT_STACK) $(WARN_CFLAGS) \
	$(STRINGOPS_FLAG) $(HWCAP_CFLAGS) $(OSCFLAGS) \
	-I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \
	-I $(MULTIBUILDTOP)../../gcc/include

AM_LDFLAGS =

if USING_SPLIT_STACK
AM_LDFLAGS += -XCClinker $(SPLIT_STACK)
endif

if LIBGO_IS_AIX
# Using an import file for libgo avoid requiring to use the -brtl flag
# when builing a go program
AM_LDFLAGS += -Wl,-bbigtoc -Wl,-bI:$(srcdir)/libgo.imp
EXTRA_libgo_la_DEPENDENCIES = libgo.imp
endif

# Multilib support.
MAKEOVERRIDES=

# Work around what appears to be a GNU make  handling MAKEFLAGS
# values defined in terms of make variables, as is the case for CC and
# friends when we are called from the top level Makefile.
AM_MAKEFLAGS = \
	"AR_FLAGS=$(AR_FLAGS)" \
	"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
	"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
	"CFLAGS=$(CFLAGS)" \
	"CXXFLAGS=$(CXXFLAGS)" \
	"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
	"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
	"GOC_FOR_TARGET=$(GOC_FOR_TARGET)" \
	"GOC=$(GOC)" \
	"GOCFLAGS=$(GOCFLAGS)" \
	"INSTALL=$(INSTALL)" \
	"INSTALL_DATA=$(INSTALL_DATA)" \
	"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
	"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
	"LDFLAGS=$(LDFLAGS)" \
	"LIBCFLAGS=$(LIBCFLAGS)" \
	"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
	"MAKE=$(MAKE)" \
	"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
	"PICFLAG=$(PICFLAG)" \
	"PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
	"SHELL=$(SHELL)" \
	"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
	"exec_prefix=$(exec_prefix)" \
	"infodir=$(infodir)" \
	"libdir=$(libdir)" \
	"includedir=$(includedir)" \
	"prefix=$(prefix)" \
	"tooldir=$(tooldir)" \
	"gxx_include_dir=$(gxx_include_dir)" \
	"AR=$(AR)" \
	"AS=$(AS)" \
	"LD=$(LD)" \
	"RANLIB=$(RANLIB)" \
	"NM=$(NM)" \
	"NM_FOR_BUILD=$(NM_FOR_BUILD)" \
	"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
	"DESTDIR=$(DESTDIR)" \
	"WERROR=$(WERROR)"

# Subdir rules rely on $(FLAGS_TO_PASS)
FLAGS_TO_PASS = $(AM_MAKEFLAGS)

if GOC_IS_LLGO
toolexeclib_LTLIBRARIES = libgo-llgo.la
toolexeclib_LIBRARIES = libgobegin-llgo.a
else
toolexeclib_LTLIBRARIES = libgo.la
toolexeclib_LIBRARIES = libgobegin.a libgolibbegin.a
endif

noinst_LIBRARIES = libgotool.a

toolexeclibgo_DATA = \
	bufio.gox \
	bytes.gox \
	context.gox \
	crypto.gox \
	encoding.gox \
	errors.gox \
	expvar.gox \
	flag.gox \
	fmt.gox \
	hash.gox \
	html.gox \
	image.gox \
	io.gox \
	log.gox \
	math.gox \
	mime.gox \
	net.gox \
	os.gox \
	path.gox \
	reflect.gox \
	regexp.gox \
	runtime.gox \
	sort.gox \
	strconv.gox \
	strings.gox \
	sync.gox \
	syscall.gox \
	testing.gox \
	time.gox \
	unicode.gox

toolexeclibgoarchivedir = $(toolexeclibgodir)/archive

toolexeclibgoarchive_DATA = \
	archive/tar.gox \
	archive/zip.gox

toolexeclibgocompressdir = $(toolexeclibgodir)/compress

toolexeclibgocompress_DATA = \
	compress/bzip2.gox \
	compress/flate.gox \
	compress/gzip.gox \
	compress/lzw.gox \
	compress/zlib.gox

toolexeclibgocontainerdir = $(toolexeclibgodir)/container

toolexeclibgocontainer_DATA = \
	container/heap.gox \
	container/list.gox \
	container/ring.gox

toolexeclibgocryptodir = $(toolexeclibgodir)/crypto

toolexeclibgocrypto_DATA = \
	crypto/aes.gox \
	crypto/cipher.gox \
	crypto/des.gox \
	crypto/dsa.gox \
	crypto/ecdsa.gox \
	crypto/elliptic.gox \
	crypto/hmac.gox \
	crypto/md5.gox \
	crypto/rand.gox \
	crypto/rc4.gox \
	crypto/rsa.gox \
	crypto/sha1.gox \
	crypto/sha256.gox \
	crypto/sha512.gox \
	crypto/subtle.gox \
	crypto/tls.gox \
	crypto/x509.gox

toolexeclibgocryptox509dir = $(toolexeclibgocryptodir)/x509

toolexeclibgocryptox509_DATA = \
	crypto/x509/pkix.gox

toolexeclibgodatabasedir = $(toolexeclibgodir)/database

toolexeclibgodatabase_DATA = \
	database/sql.gox

toolexeclibgodatabasesqldir = $(toolexeclibgodatabasedir)/sql

toolexeclibgodatabasesql_DATA = \
	database/sql/driver.gox

toolexeclibgodebugdir = $(toolexeclibgodir)/debug

toolexeclibgodebug_DATA = \
	debug/dwarf.gox \
	debug/elf.gox \
	debug/gosym.gox \
	debug/macho.gox \
	debug/pe.gox \
	debug/plan9obj.gox

toolexeclibgoencodingdir = $(toolexeclibgodir)/encoding

toolexeclibgoencoding_DATA = \
	encoding/ascii85.gox \
	encoding/asn1.gox \
	encoding/base32.gox \
	encoding/base64.gox \
	encoding/binary.gox \
	encoding/csv.gox \
	encoding/gob.gox \
	encoding/hex.gox \
	encoding/json.gox \
	encoding/pem.gox \
	encoding/xml.gox

toolexeclibgoexpdir = $(toolexeclibgodir)/exp

toolexeclibgoexp_DATA = \
	exp/proxy.gox \
	exp/terminal.gox

toolexeclibgogodir = $(toolexeclibgodir)/go

toolexeclibgogo_DATA = \
	go/ast.gox \
	go/build.gox \
	go/constant.gox \
	go/doc.gox \
	go/format.gox \
	go/importer.gox \
	go/parser.gox \
	go/printer.gox \
	go/scanner.gox \
	go/token.gox \
	go/types.gox

toolexeclibgohashdir = $(toolexeclibgodir)/hash

toolexeclibgohash_DATA = \
	hash/adler32.gox \
	hash/crc32.gox \
	hash/crc64.gox \
	hash/fnv.gox

toolexeclibgohtmldir = $(toolexeclibgodir)/html

toolexeclibgohtml_DATA = \
	html/template.gox

toolexeclibgoimagedir = $(toolexeclibgodir)/image

toolexeclibgoimage_DATA = \
	image/color.gox \
	image/draw.gox \
	image/gif.gox \
	image/jpeg.gox \
	image/png.gox

toolexeclibgoimagecolordir = $(toolexeclibgoimagedir)/color

toolexeclibgoimagecolor_DATA = \
	image/color/palette.gox

toolexeclibgoindexdir = $(toolexeclibgodir)/index

toolexeclibgoindex_DATA = \
	index/suffixarray.gox

toolexeclibgoiodir = $(toolexeclibgodir)/io

toolexeclibgoio_DATA = \
	io/ioutil.gox

toolexeclibgologdir = $(toolexeclibgodir)/log

toolexeclibgolog_DATA = \
	log/syslog.gox

toolexeclibgomathdir = $(toolexeclibgodir)/math

toolexeclibgomath_DATA = \
	math/big.gox \
	math/bits.gox \
	math/cmplx.gox \
	math/rand.gox

toolexeclibgomimedir = $(toolexeclibgodir)/mime

toolexeclibgomime_DATA = \
	mime/multipart.gox \
	mime/quotedprintable.gox

toolexeclibgonetdir = $(toolexeclibgodir)/net

toolexeclibgonet_DATA = \
	net/http.gox \
	net/mail.gox \
	net/rpc.gox \
	net/smtp.gox \
	net/textproto.gox \
	net/url.gox

toolexeclibgonethttpdir = $(toolexeclibgonetdir)/http

toolexeclibgonethttp_DATA = \
	net/http/cgi.gox \
	net/http/cookiejar.gox \
	net/http/fcgi.gox \
	net/http/httptest.gox \
	net/http/httptrace.gox \
	net/http/httputil.gox \
	net/http/pprof.gox

toolexeclibgonetrpcdir = $(toolexeclibgonetdir)/rpc

toolexeclibgonetrpc_DATA = \
	net/rpc/jsonrpc.gox

toolexeclibgoosdir = $(toolexeclibgodir)/os

toolexeclibgoos_DATA = \
	os/exec.gox \
	os/signal.gox \
	os/user.gox

toolexeclibgopathdir = $(toolexeclibgodir)/path

toolexeclibgopath_DATA = \
	path/filepath.gox

toolexeclibgoregexpdir = $(toolexeclibgodir)/regexp

toolexeclibgoregexp_DATA = \
	regexp/syntax.gox

toolexeclibgoruntimedir = $(toolexeclibgodir)/runtime

toolexeclibgoruntime_DATA = \
	runtime/debug.gox \
	runtime/pprof.gox \
	runtime/trace.gox

toolexeclibgosyncdir = $(toolexeclibgodir)/sync

toolexeclibgosync_DATA = \
	sync/atomic.gox

toolexeclibgotestingdir = $(toolexeclibgodir)/testing

toolexeclibgotesting_DATA = \
	testing/iotest.gox \
	testing/quick.gox

toolexeclibgotestinginternaldir = $(toolexeclibgotestingdir)/internal

toolexeclibgotestinginternal_DATA = \
	testing/internal/testdeps.gox

toolexeclibgotextdir = $(toolexeclibgodir)/text

toolexeclibgotext_DATA = \
	text/scanner.gox \
	text/tabwriter.gox \
	text/template.gox

toolexeclibgotexttemplatedir = $(toolexeclibgotextdir)/template

toolexeclibgotexttemplate_DATA = \
	text/template/parse.gox

toolexeclibgounicodedir = $(toolexeclibgodir)/unicode

toolexeclibgounicode_DATA = \
	unicode/utf16.gox \
	unicode/utf8.gox

if LIBGO_IS_RTEMS
rtems_task_variable_add_file = runtime/rtems-task-variable-add.c
else
rtems_task_variable_add_file =
endif

if LIBGO_IS_LINUX
runtime_getncpu_file = runtime/getncpu-linux.c
else
if LIBGO_IS_DARWIN
runtime_getncpu_file = runtime/getncpu-bsd.c
else
if LIBGO_IS_IRIX
runtime_getncpu_file = runtime/getncpu-irix.c
else
if LIBGO_IS_SOLARIS
runtime_getncpu_file = runtime/getncpu-solaris.c
else
if LIBGO_IS_FREEBSD
runtime_getncpu_file = runtime/getncpu-bsd.c
else
if LIBGO_IS_NETBSD
runtime_getncpu_file = runtime/getncpu-bsd.c
else
if LIBGO_IS_AIX
runtime_getncpu_file = runtime/getncpu-aix.c
else
runtime_getncpu_file = runtime/getncpu-none.c
endif
endif
endif
endif
endif
endif
endif

runtime_files = \
	runtime/aeshash.c \
	runtime/go-assert.c \
	runtime/go-caller.c \
	runtime/go-callers.c \
	runtime/go-cdiv.c \
	runtime/go-cgo.c \
	runtime/go-construct-map.c \
	runtime/go-ffi.c \
	runtime/go-fieldtrack.c \
	runtime/go-matherr.c \
	runtime/go-memclr.c \
	runtime/go-memcmp.c \
	runtime/go-memequal.c \
	runtime/go-memmove.c \
	runtime/go-nanotime.c \
	runtime/go-now.c \
	runtime/go-nosys.c \
	runtime/go-reflect-call.c \
	runtime/go-runtime-error.c \
	runtime/go-setenv.c \
	runtime/go-signal.c \
	runtime/go-strslice.c \
	runtime/go-typedesc-equal.c \
	runtime/go-unsafe-pointer.c \
	runtime/go-unsetenv.c \
	runtime/go-unwind.c \
	runtime/go-varargs.c \
	runtime/env_posix.c \
	runtime/panic.c \
	runtime/print.c \
	runtime/proc.c \
	runtime/runtime_c.c \
	runtime/stack.c \
	runtime/thread.c \
	runtime/yield.c \
	$(rtems_task_variable_add_file) \
	$(runtime_getncpu_file)

version.go: s-version; @true
s-version: Makefile
	rm -f version.go.tmp
	echo "package sys" > version.go.tmp
	echo 'const 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
	echo 'const GOOS = "'$(GOOS)'"' >> version.go.tmp
	echo 'const GccgoToolDir = "$(libexecsubdir)"' >> version.go.tmp
	echo >> version.go.tmp
	echo "type ArchFamilyType int" >> version.go.tmp
	echo >> version.go.tmp
	echo "const (" >> version.go.tmp
	echo "	UNKNOWN ArchFamilyType = iota" >> version.go.tmp
	for a in $(ALLGOARCHFAMILY); do \
	  echo "	$${a}" >> version.go.tmp; \
	done
	echo ")" >> version.go.tmp
	echo >> version.go.tmp
	for a in $(ALLGOARCH); do \
	  f=`echo $${a} | sed -e 's/\(.\).*/\1/' -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`; \
	  n="$${f}`echo $${a} | sed -e 's/.//'`"; \
	  if test "$${a}" = "$(GOARCH)"; then \
	    echo "const Goarch$${n} = 1" >> version.go.tmp; \
	  else \
	    echo "const Goarch$${n} = 0" >> version.go.tmp; \
	  fi; \
	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 ")" >> version.go.tmp
	echo >> version.go.tmp
	for a in $(ALLGOOS); do \
	  f=`echo $${a} | sed -e 's/\(.\).*/\1/' -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`; \
	  n="$${f}`echo $${a} | sed -e 's/.//'`"; \
	  if test "$${a}" = "$(GOOS)"; then \
	    echo "const Goos$${n} = 1" >> version.go.tmp; \
	  else \
	    echo "const Goos$${n} = 0" >> version.go.tmp; \
	  fi; \
	done
	echo >> version.go.tmp
	echo "type Uintreg uintptr" >> version.go.tmp
	$(SHELL) $(srcdir)/mvifdiff.sh version.go.tmp version.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
	$(SHELL) $(srcdir)/mvifdiff.sh tmp-runtime_sysinfo.go runtime_sysinfo.go
	$(STAMP) $@

sigtab.go: s-sigtab; @true
s-sigtab: $(srcdir)/mksigtab.sh gen-sysinfo.go
	GOOS=$(GOOS) $(SHELL) $(srcdir)/mksigtab.sh > tmp-sigtab.go
	$(SHELL) $(srcdir)/mvifdiff.sh tmp-sigtab.go sigtab.go
	$(STAMP) $@

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 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 'const DefaultPkgConfig = "pkg-config"' >> 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
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
	$(STAMP) $@

noinst_DATA = zstdpkglist.go 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 "" >> 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
	echo '}' >> zstdpkglist.go.tmp
	$(SHELL) $(srcdir)/mvifdiff.sh zstdpkglist.go.tmp zstdpkglist.go
	$(STAMP) $@

if LIBGO_IS_LINUX
syscall_epoll_file = epoll.go
else
syscall_epoll_file =
endif

libcalls.go: s-libcalls; @true
s-libcalls: libcalls-list go/syscall/mksyscall.awk $(srcdir)/go/syscall/*.go
	rm -f libcalls.go.tmp
	$(AWK) -f $(srcdir)/go/syscall/mksyscall.awk `cat libcalls-list` > libcalls.go.tmp
	$(SHELL) $(srcdir)/mvifdiff.sh libcalls.go.tmp libcalls.go
	$(STAMP) $@

libcalls-list: s-libcalls-list; @true
s-libcalls-list: Makefile $(srcdir)/go/syscall/*.go
	rm -f libcalls-list.tmp
	$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/syscall $(matchargs_syscall) > libcalls-list.tmp
	$(SHELL) $(srcdir)/mvifdiff.sh libcalls-list.tmp libcalls-list
	$(STAMP) $@

syscall_arch.go: s-syscall_arch; @true
s-syscall_arch: Makefile
	rm -f syscall_arch.go.tmp
	echo "package syscall" > syscall_arch.go.tmp
	echo 'const ARCH = "'$(GOARCH)'"' >> syscall_arch.go.tmp
	echo 'const OS = "'$(GOOS)'"' >> syscall_arch.go.tmp
	$(SHELL) $(srcdir)/mvifdiff.sh syscall_arch.go.tmp syscall_arch.go
	$(STAMP) $@

SYSINFO_FLAGS = \
	$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
	$(CPPFLAGS) $(OSCFLAGS) -O

gen-sysinfo.go: s-gen-sysinfo; @true
s-gen-sysinfo: $(srcdir)/sysinfo.c config.h
	$(CC) $(SYSINFO_FLAGS) -fdump-go-spec=tmp-gen-sysinfo.go -std=gnu99 -S -o sysinfo.s $(srcdir)/sysinfo.c
	rm -f sysinfo.s
	$(SHELL) $(srcdir)/mvifdiff.sh tmp-gen-sysinfo.go gen-sysinfo.go
	$(STAMP) $@

errno.i: s-errno; @true
s-errno:
	echo '#include <errno.h>' | $(CC) $(SYSINFO_FLAGS) -x c - -E -dM > tmp-errno.i
	$(SHELL) $(srcdir)/mvifdiff.sh tmp-errno.i errno.i
	$(STAMP) $@

sysinfo.go: s-sysinfo; @true
s-sysinfo: $(srcdir)/mksysinfo.sh gen-sysinfo.go errno.i
	GOOS=$(GOOS) $(SHELL) $(srcdir)/mksysinfo.sh
	$(SHELL) $(srcdir)/mvifdiff.sh tmp-sysinfo.go sysinfo.go
	$(STAMP) $@

# The epoll struct has an embedded union and is packed on x86_64,
# which is too complicated for mksysinfo.sh.  We find the offset of
# the only field we care about in configure.ac, and generate the
# struct here.
epoll.go: s-epoll; @true
s-epoll: Makefile
	rm -f epoll.go.tmp
	echo 'package syscall' > epoll.go.tmp
	echo 'type EpollEvent struct {' >> epoll.go.tmp
	echo '	Events uint32' >> epoll.go.tmp
	case "$(SIZEOF_STRUCT_EPOLL_EVENT),$(STRUCT_EPOLL_EVENT_FD_OFFSET)" in \
	0,0) echo 1>&2 "*** struct epoll_event data.fd offset unknown"; \
	   exit 1; ;; \
	8,4) echo '	Fd int32' >> epoll.go.tmp; ;; \
	12,4) echo '	Fd int32' >> epoll.go.tmp; \
	   echo '	Pad [4]byte' >> epoll.go.tmp; ;; \
	12,8) echo '	Pad [4]byte' >> epoll.go.tmp; \
	   echo '	Fd int32' >> epoll.go.tmp; ;; \
	16,8) echo '	Pad [4]byte' >> epoll.go.tmp; \
	   echo '	Fd int32' >> epoll.go.tmp; \
	   echo '	Pad2 [4]byte' >> epoll.go.tmp; ;; \
	*) echo 1>&2 "*** struct epoll_event unsupported"; \
	   exit 1; ;; \
	esac
	echo '}' >> epoll.go.tmp
	$(SHELL) $(srcdir)/mvifdiff.sh epoll.go.tmp epoll.go
	$(STAMP) $@

if LIBGO_IS_LINUX
syscall_lib_clone_lo = syscall/clone_linux.lo
else
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 \
	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

libgo_go_objs = \
	$(addsuffix .lo,$(PACKAGES)) \
	bytes/index.lo \
	reflect/makefunc_ffi_c.lo \
	strings/index.lo \
	$(syscall_lib_clone_lo) \
	syscall/errno.lo \
	syscall/signame.lo \
	syscall/wait.lo \
	$(golang_org_x_net_lif_lo) \
	$(golang_org_x_net_route_lo) \
	log/syslog/syslog_c.lo \
	$(os_lib_inotify_lo) \
	runtime/internal/atomic_c.lo \
	sync/atomic_c.lo

libgo_ldflags = \
	-version-info $(libtool_VERSION) $(PTHREAD_CFLAGS) $(AM_LDFLAGS)

libgo_libadd = \
	$(libgo_go_objs) ../libbacktrace/libbacktrace.la \
	$(LIBATOMIC) $(LIBFFI) $(PTHREAD_LIBS) $(MATH_LIBS) $(NET_LIBS)

libgo_la_SOURCES = $(runtime_files)
libgo_la_LDFLAGS = $(libgo_ldflags)
libgo_la_LIBADD = $(libgo_libadd)

libgo_llgo_la_SOURCES = $(runtime_files)
libgo_llgo_la_LDFLAGS = $(libgo_ldflags)
libgo_llgo_la_LIBADD = $(libgo_libadd)

libgobegin_a_SOURCES = \
	runtime/go-main.c

libgobegin_llgo_a_SOURCES = \
	runtime/go-main.c

# Use -fPIC for libgobegin so that it can be put in a PIE.
libgobegin_a_CFLAGS = $(AM_CFLAGS) -fPIC
libgobegin_llgo_a_CFLAGS = $(AM_CFLAGS) -fPIC

libgolibbegin_a_SOURCES = \
	runtime/go-libmain.c

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

libgotool_a_SOURCES =
libgotool_a_DEPENDENCIES = $(addsuffix .lo,$(GOTOOL_PACKAGES))
libgotool_a_LIBADD = $(addsuffix .o,$(GOTOOL_PACKAGES))

# Make sure runtime.inc is built before compiling any .c file.
$(libgo_la_OBJECTS): runtime.inc
$(libgo_llgo_la_OBJECTS): runtime.inc
$(libgobegin_a_OBJECTS): runtime.inc
$(libgobegin_llgo_a_OBJECTS): runtime.inc
$(libgolibbegin_a_OBJECTS): runtime.inc

LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))

GOCFLAGS = $(CFLAGS)
AM_GOCFLAGS = $(STRINGOPS_FLAG) $(GO_SPLIT_STACK)
GOCOMPILE = $(GOC) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_GOCFLAGS) $(GOCFLAGS)

LTGOCOMPILE = $(LIBTOOL) --tag GO --mode=compile $(GOC) $(INCLUDES) \
	$(AM_GOCFLAGS) $(GOCFLAGS)

GOLINK = $(LIBTOOL) --tag GO --mode-link $(GOC) \
	$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_GOCFLAGS) $(LTLDFLAGS) -o $@

# Build the dependencies for a Go package.
BUILDDEPS = \
	$(MKDIR_P) $(@D); \
	dir=`echo $@ | sed -e 's/.lo.dep$$//'`; \
	files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$$dir --extrafiles="$(extra_go_files_$(subst /,_,$(subst .lo.dep,,$@)))" $(matchargs_$(subst /,_,$(subst .lo.dep,,$@)))`; \
	$(SHELL) $(srcdir)/godeps.sh `echo $@ | sed -e 's/.dep$$//'` $$files > $@.tmp; \
	if ! cmp $@.tmp $@ >/dev/null 2>/dev/null; then \
	  rm -f `echo $@ | sed -e 's/\.dep$$//'`; \
	fi; \
	mv -f $@.tmp $@

# Build the .go files for a package, generating a .lo file.
BUILDPACKAGE = \
	$(MKDIR_P) $(@D); \
	files=`echo $^ | sed -e 's/[^ ]*\.gox//g' -e 's/[^ ]*\.dep//'`; \
	$(LTGOCOMPILE) -I . -c -fgo-pkgpath=`echo $@ | sed -e 's/.lo$$//' -e 's|golang_org|vendor/golang_org|'` $($(subst -,_,$(subst .,_,$(subst /,_,$@)))_GOCFLAGS) -o $@ $$files

# How to build a .gox file from a .lo file.
# Matching .o file can either be in the same directory as the .lo (non-PIC
# object) or in the .libs directory (PIC object).
BUILDGOX = \
	f="$(basename $<).o"; \
	if test ! -f $$f; then \
	  f="$(basename $(<D)/.libs/$(<F)).o"; \
	fi; \
	$(OBJCOPY) -j .go_export $$f $@.tmp; \
	$(SHELL) $(srcdir)/mvifdiff.sh $@.tmp `echo $@ | sed -e 's/s-gox/gox/'`

GOTESTFLAGS =
GOBENCH = 

# Check a package.
CHECK = \
	GC="$(GOC) $(GOCFLAGS) $($(subst /,_,$@)_GOCFLAGS) -L `${PWD_COMMAND}` -L `${PWD_COMMAND}`/.libs"; \
	export GC; \
	GOLIBS="$(extra_check_libs_$(subst /,_,$(@D))) $(MATH_LIBS) $(NET_LIBS) $(LIBS)"; \
	export GOLIBS; \
	RUNTESTFLAGS="$(RUNTESTFLAGS)"; \
	export RUNTESTFLAGS; \
	MAKE="$(MAKE)"; \
	export MAKE; \
	NM="$(NM)"; \
	export NM; \
	libgccdir=`${GOC} -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; \
	$(MKDIR_P) $(@D); \
	rm -f $@-testsum $@-testlog; \
	files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst /,_,$(@D)))" $(matchargs_$(subst /,_,$(@D)))`; \
	if test "$(USE_DEJAGNU)" = "yes"; then \
	  $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \
	elif test "$(GOBENCH)" != ""; then \
	  $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --bench="$(GOBENCH)" $(GOTESTFLAGS); \
	else \
	  if $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" $(GOTESTFLAGS) >>$@-testlog 2>&1; then \
	    echo "PASS: $(@D)" >> $@-testlog; \
	    echo "PASS: $(@D)"; \
	    echo "PASS: $(@D)" > $@-testsum; \
	  else \
	    echo "FAIL: $(@D)" >> $@-testlog; \
	    cat $@-testlog; \
	    echo "FAIL: $(@D)" > $@-testsum; \
	    exit 1; \
	  fi; \
	fi

# Build all packages before checking any.
CHECK_DEPS = \
	$(toolexeclibgo_DATA) \
	$(toolexeclibgoarchive_DATA) \
	$(toolexeclibgocompress_DATA) \
	$(toolexeclibgocontainer_DATA) \
	$(toolexeclibgocrypto_DATA) \
	$(toolexeclibgodebug_DATA) \
	$(toolexeclibgoencoding_DATA) \
	$(toolexeclibgoexp_DATA) \
	$(toolexeclibgogo_DATA) \
	$(toolexeclibgohash_DATA) \
	$(toolexeclibgoimage_DATA) \
	$(toolexeclibgoindex_DATA) \
	$(toolexeclibgoio_DATA) \
	$(toolexeclibgolog_DATA) \
	$(toolexeclibgomath_DATA) \
	$(toolexeclibgomime_DATA) \
	$(toolexeclibgonet_DATA) \
	$(toolexeclibgonethttp_DATA) \
	$(toolexeclibgoos_DATA) \
	$(toolexeclibgopath_DATA) \
	$(toolexeclibgorpc_DATA) \
	$(toolexeclibgoruntime_DATA) \
	$(toolexeclibgosync_DATA) \
	$(toolexeclibgotesting_DATA) \
	$(toolexeclibgotext_DATA) \
	$(toolexeclibgotexttemplate_DATA) \
	$(toolexeclibgounicode_DATA) \
	$(noinst_LIBRARIES)

if GOC_IS_LLGO
CHECK_DEPS += libgo-llgo.la libgobegin-llgo.a
else
CHECK_DEPS += libgo.la libgobegin.a
endif

# PACKAGE_template defines the rules for each package.
# For example, for the package bufio, it produces:
#
# @go_include@ bufio.lo.dep
# bufio.lo.dep: $(srcdir)/go/bufio/*.go
# 	$(BUILDDEPS)
# bufio.lo:
# 	$(BUILDPACKAGE)
# bufio/check: $(CHECK_DEPS)
# 	@$(CHECK)
# .PHONY: bufio/check
#
# This is invoked with $(1) set to a package, which is a directory name,
# such as "bufio" or "archive/tar".
define PACKAGE_template
@go_include@ $(1).lo.dep
$(1).lo.dep: $(srcdir)/go/$(1)/*.go
	$$(BUILDDEPS)
$(1).lo:
	$$(BUILDPACKAGE)
$(1)/check: $$(CHECK_DEPS)
	@$$(CHECK)
.PHONY: $(1)/check
$(1).gox: $(1).s-gox; @true
$(1).s-gox: $(1).lo
	$$(BUILDGOX)
	$$(STAMP) $$@
endef

# This line expands PACKAGE_template once for each package name listed
# in $(PACKAGES).
$(foreach package,$(PACKAGES),$(eval $(call PACKAGE_template,$(package))))
$(foreach package,$(GOTOOL_PACKAGES),$(eval $(call PACKAGE_template,$(package))))

# 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)

# Add the generated file runtime_sysinfo.go to the runtime package.
extra_go_files_runtime = runtime_sysinfo.go sigtab.go
runtime.lo.dep: $(extra_go_files_runtime)

# Add generated files to the syscall package.
extra_go_files_syscall = \
	libcalls.go \
	sysinfo.go \
	syscall_arch.go \
	$(syscall_epoll_file)
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_check_GOCFLAGS = -fgo-compiling-runtime
runtime_internal_atomic_lo_GOCFLAGS = -fgo-compiling-runtime
runtime_internal_atomic_lo_check_GOCFLAGS = -fgo-compiling-runtime
runtime_internal_sys_lo_GOCFLAGS = -fgo-compiling-runtime
runtime_internal_sys_lo_check_GOCFLAGS = -fgo-compiling-runtime

# If libffi is supported (the normal case) use the ffi build tag for
# the runtime package.
if USE_LIBFFI
matchargs_runtime = --tag=libffi
else
matchargs_runtime =
endif

# At least for now, we need -static-libgo for this test, because
# otherwise we can't get the line numbers.
# Also use -fno-inline to get better results from the memory profiler.
runtime_pprof_check_GOCFLAGS = -static-libgo -fno-inline

extra_go_files_runtime_internal_sys = version.go
runtime/internal/sys.lo.dep: $(extra_go_files_runtime_internal_sys)

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_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_work = $(abs_builddir)/libgotool.a

# FIXME: The following C files may as well move to the runtime
# directory and be treated like other C files.

# Use C code to speed up {bytes,strings}.IndexByte and friends.
bytes/index.lo: go/bytes/indexbyte.c runtime.inc
	@$(MKDIR_P) bytes
	$(LTCOMPILE) -c -o $@ $(srcdir)/go/bytes/indexbyte.c
strings/index.lo: go/strings/indexbyte.c runtime.inc
	@$(MKDIR_P) strings
	$(LTCOMPILE) -c -o $@ $(srcdir)/go/strings/indexbyte.c

# Use a C function with a fixed number of arguments to call a C
# varargs function.
log/syslog/syslog_c.lo: go/log/syslog/syslog_c.c runtime.inc
	@$(MKDIR_P) log/syslog
	$(LTCOMPILE) -c -o $@ $(srcdir)/go/log/syslog/syslog_c.c

# The interface to libffi from the reflect package is written in C.
reflect/makefunc_ffi_c.lo: go/reflect/makefunc_ffi_c.c runtime.inc
	@$(MKDIR_P) reflect
	$(LTCOMPILE) -c -o $@ $(srcdir)/go/reflect/makefunc_ffi_c.c

# The atomic functions are written in C.
runtime/internal/atomic_c.lo: go/runtime/internal/atomic/atomic.c runtime.inc
	@$(MKDIR_P) runtime/internal
	$(LTCOMPILE) -c -o $@ $(srcdir)/go/runtime/internal/atomic/atomic.c
sync/atomic_c.lo: go/sync/atomic/atomic.c runtime.inc
	@$(MKDIR_P) sync
	$(LTCOMPILE) -c -o $@ $(srcdir)/go/sync/atomic/atomic.c

# A few syscall functions are written in C.
syscall/clone_linux.lo: go/syscall/clone_linux.c runtime.inc
	@$(MKDIR_P) syscall
	$(LTCOMPILE) -c -o $@ $(srcdir)/go/syscall/clone_linux.c
syscall/errno.lo: go/syscall/errno.c runtime.inc
	@$(MKDIR_P) syscall
	$(LTCOMPILE) -c -o $@ $(srcdir)/go/syscall/errno.c
syscall/signame.lo: go/syscall/signame.c runtime.inc
	@$(MKDIR_P) syscall
	$(LTCOMPILE) -c -o $@ $(srcdir)/go/syscall/signame.c
syscall/wait.lo: go/syscall/wait.c runtime.inc
	@$(MKDIR_P) syscall
	$(LTCOMPILE) -c -o $@ $(srcdir)/go/syscall/wait.c

# Solaris 12 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
matchargs_os = --tag=solaristag
else
matchargs_os =
endif
else
matchargs_os =
endif

if LIBGO_IS_BSD

# Build golang_org/x/net/route only on BSD systems.

$(eval $(call PACKAGE_template,golang_org/x/net/route))

golang_org_x_net_route_lo = \
	golang_org/x/net/route.lo
golang_org_x_net_route_check = \
	golang_org/x/net/route/check

endif

if LIBGO_IS_SOLARIS

# Build golang_org/x/net/lif only on Solaris systems.

$(eval $(call PACKAGE_template,golang_org/x/net/lif))

golang_org_x_net_lif_lo = \
	golang_org/x/net/lif.lo
golang_org_x_net_lif_check = \
	golang_org/x/net/lif/check

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 \
	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 \
	$(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

check: check-tail
check-recursive: check-head

check-head:
	@echo "Test Run By $${USER} on `date`" > libgo.head
	@echo "Native configuration is $(host_triplet)" >> libgo.head
	@echo >> libgo.head
	@echo "		=== libgo tests ===" >> libgo.head
	@echo >> libgo.head

check-tail: check-recursive check-multi
	@if test "$(USE_DEJAGNU)" = "yes"; then \
	  exit 0; \
	fi; \
	lib=`${PWD_COMMAND} | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \
	for dir in . $(MULTIDIRS); do \
	  mv ../$${dir}/$${lib}/libgo.sum ../$${dir}/$${lib}/libgo.sum.sep; \
	  mv ../$${dir}/$${lib}/libgo.log ../$${dir}/$${lib}/libgo.log.sep; \
	done; \
	mv libgo.head libgo.sum; \
	cp libgo.sum libgo.log; \
	echo "Schedule of variations:" >> libgo.sum; \
	for dir in . $(MULTIDIRS); do \
	  multidir=../$${dir}/$${lib}; \
	  multivar=`cat $${multidir}/libgo.var`; \
	  echo "    $${multivar}" >> libgo.sum; \
	done; \
	echo >> libgo.sum; \
	pass=0; fail=0; untested=0; \
	for dir in . $(MULTIDIRS); do \
	  multidir=../$${dir}/$${lib}; \
	  multivar=`cat $${multidir}/libgo.var`; \
	  echo "Running target $${multivar}" >> libgo.sum; \
	  echo "Running $(srcdir)/libgo.exp ..." >> libgo.sum; \
	  cat $${multidir}/libgo.sum.sep >> libgo.sum; \
	  cat $${multidir}/libgo.log.sep >> libgo.log; \
	  if test -n "${MULTIDIRS}"; then \
	    echo "		=== libgo Summary for $${multivar} ===" >> libgo.sum; \
	    echo >> libgo.sum; \
	  fi; \
	  p=`grep -c PASS $${multidir}/libgo.sum.sep`; \
	  pass=`expr $$pass + $$p`; \
	  if test "$$p" -ne "0" && test -n "${MULTIDIRS}"; then \
	    echo "# of expected passes		$$p" >> libgo.sum; \
	  fi; \
	  p=`grep -c FAIL $${multidir}/libgo.sum.sep`; \
	  fail=`expr $$fail + $$p`; \
	  if test "$$p" -ne "0" && test -n "${MULTIDIRS}"; then \
	    echo "# of unexpected failures	$$p" >> libgo.sum; \
	  fi; \
	  p=`grep -c UNTESTED $${multidir}/libgo.sum.sep`; \
	  untested=`expr $$untested + $$p`; \
	  if test "$$p" -ne "0" && test -n "${MULTIDIRS}"; then \
	    echo "# of untested testcases		$$p" >> libgo.sum; \
	  fi; \
	done; \
	echo >> libgo.sum; \
	echo "		=== libgo Summary ===" >> libgo.sum; \
	echo >> libgo.sum; \
	if test "$$pass" -ne "0"; then \
	  echo "# of expected passes		$$pass" >> libgo.sum; \
	fi; \
	if test "$$fail" -ne "0"; then \
	  echo "# of unexpected failures	$$fail" >> libgo.sum; \
	fi; \
	if test "$$untested" -ne "0"; then \
	  echo "# of untested testcases		$$untested" >> libgo.sum; \
	fi; \
	echo `echo $(GOC) | sed -e 's/ .*//'`  `$(GOC) -v 2>&1 | grep " version" | sed -n -e 's/.* \(version.*$$\)/\1/p'` >> libgo.sum; \
	echo >> libgo.log; \
	echo "runtest completed at `date`" >> libgo.log; \
	if test "$$fail" -ne "0"; then \
	  status=1; \
	else \
	  status=0; \
	fi; \
	exit $$status

check-am:
	@rm -f libgo.sum libgo.log libgo.tail
	@multivar="unix"; \
	[ -z "$(MULTIFLAGS)" ] || multivar="$${multivar}/$(MULTIFLAGS)"; \
	echo "$${multivar}" > libgo.var
	@for f in $(TEST_PACKAGES); do \
	   rm -f $$f-testsum $$f-testlog; \
	 done
	-@$(MAKE) -k $(TEST_PACKAGES)
	@for f in $(TEST_PACKAGES); do \
	  if test -f $$f-testsum; then \
	    cat $$f-testsum >> libgo.sum; \
	  fi; \
	  if test -f $$f-testlog; then \
	    cat $$f-testlog >> libgo.log; \
	  fi; \
	done

check-multi:
	$(MULTIDO) $(AM_MAKEFLAGS) DO=check-am multi-do # $(MAKE)

bench:
	-@$(MAKE) -k $(TEST_PACKAGES) GOBENCH=.

MOSTLYCLEANFILES = \
	s-runtime_sysinfo s-sigtab s-runtime-inc s-zstdpkglist \
	s-libcalls s-libcalls-list s-syscall_arch s-gen-sysinfo s-sysinfo \
	s-errno s-epoll \
	libgo.head libgo.sum.sep libgo.log.sep libgo.var \
	libcalls-list runtime.inc runtime.inc.tmp2 runtime.inc.tmp3

mostlyclean-local:
	find . -name '*.lo' -print | xargs $(LIBTOOL) --mode=clean rm -f
	find . -name '*.$(OBJEXT)' -print | xargs rm -f
	find . -name '*-testsum' -print | xargs rm -f
	find . -name '*-testlog' -print | xargs rm -f

CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc

clean-local:
	find . -name '*.la' -print | xargs $(LIBTOOL) --mode=clean rm -f
	find . -name '*.a' -print | xargs rm -f
	find . -name '*.gox' -print | xargs rm -f
	find . -name '*.s-gox' -print | xargs rm -f

distclean-local:
	find . -name '*.lo.dep' -print | xargs rm -f
