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

# After editing the DIRS= list or adding imports to any Go files
# in any of those directories, run:
#
#	./deps.bash
#
# to rebuild the dependency information in Make.deps.

include ../Make.inc

all: install

DIRS=\
	archive/tar\
	asn1\
	big\
	bufio\
	bytes\
	cmath\
	compress/flate\
	compress/gzip\
	compress/zlib\
	container/heap\
	container/list\
	container/ring\
	container/vector\
	crypto/aes\
	crypto/block\
	crypto/blowfish\
	crypto/hmac\
	crypto/md4\
	crypto/md5\
	crypto/ocsp\
	crypto/rand\
	crypto/rc4\
	crypto/ripemd160\
	crypto/rsa\
	crypto/sha1\
	crypto/sha256\
	crypto/sha512\
	crypto/subtle\
	crypto/tls\
	crypto/x509\
	crypto/xtea\
	debug/dwarf\
	debug/macho\
	debug/elf\
	debug/gosym\
	debug/proc\
	ebnf\
	encoding/ascii85\
	encoding/base64\
	encoding/binary\
	encoding/git85\
	encoding/hex\
	encoding/pem\
	exec\
	exp/datafmt\
	exp/draw\
	exp/draw/x11\
	exp/eval\
	exp/iterable\
	expvar\
	flag\
	fmt\
	go/ast\
	go/doc\
	go/parser\
	go/printer\
	go/scanner\
	go/token\
	go/typechecker\
	gob\
	hash\
	hash/adler32\
	hash/crc32\
	hash/crc64\
	html\
	http\
	http/pprof\
	image\
	image/jpeg\
	image/png\
	index/suffixarray\
	io\
	io/ioutil\
	json\
	log\
	math\
	mime\
	mime/multipart\
	net\
	net/dict\
	net/textproto\
	netchan\
	nntp\
	os\
	os/signal\
	patch\
	path\
	rand\
	reflect\
	regexp\
	rpc\
	rpc/jsonrpc\
	runtime\
	runtime/pprof\
	scanner\
	sort\
	strconv\
	strings\
	sync\
	syscall\
	syslog\
	tabwriter\
	template\
	testing\
	testing/iotest\
	testing/quick\
	testing/script\
	time\
	unicode\
	utf16\
	utf8\
	websocket\
	xml\
	../libcgo\
	../cmd/cgo\
	../cmd/ebnflint\
	../cmd/godoc\
	../cmd/gofmt\
	../cmd/goinstall\
	../cmd/goyacc\
	../cmd/hgpatch\

NOTEST=\
	debug/proc\
	exp/draw/x11\
	go/ast\
	go/doc\
	go/token\
	hash\
	http/pprof\
	image\
	image/jpeg\
	net/dict\
	rand\
	runtime\
	runtime/pprof\
	syscall\
	testing/iotest\
	../libcgo\
	../cmd/cgo\
	../cmd/ebnflint\
	../cmd/godoc\
	../cmd/gofmt\
	../cmd/goinstall\
	../cmd/goyacc\
	../cmd/hgpatch\

NOBENCH=\
	container/vector\

# Disable tests that depend on an external network.
ifeq ($(DISABLE_NET_TESTS),1)
NOTEST+=http net
endif

# Disable tests that NaCl cannot run yet.
ifeq ($(GOOS),nacl)
NOTEST+=archive/tar  # no pipe
NOTEST+=debug/dwarf  # no pread
NOTEST+=debug/macho  # no pread
NOTEST+=debug/elf    # no pread
NOTEST+=exec         # no pipe
NOTEST+=http         # no network
NOTEST+=log          # no runtime.Caller
NOTEST+=net          # no network
NOTEST+=netchan      # no network
NOTEST+=os           # many things unimplemented
NOTEST+=os/signal    # no signals
NOTEST+=path         # tree walking does not work
NOTEST+=rpc          # no network
NOTEST+=syslog       # no network
NOTEST+=time         # no syscall.Kill, syscall.SIGCHLD for sleep tests
NOTEST+=websocket    # no network
endif

# Disable tests that windows cannot run yet.
ifeq ($(GOOS),windows)
NOTEST+=exec         # no pipe
NOTEST+=os           # many things unimplemented
NOTEST+=os/signal    # no signals
NOTEST+=path         # tree walking does not work
NOTEST+=syslog       # no network
NOTEST+=time         # no syscall.Kill, syscall.SIGCHLD for sleep tests
NOTEST+=websocket    # no network
endif

ifeq ($(GOARCH),arm)
# Tests that fail, probably 5g bugs.
# Disable so that dashboard all.bash can catch regressions.
NOTEST+=archive/tar
NOTEST+=asn1
NOTEST+=big
NOTEST+=bytes
NOTEST+=cmath
NOTEST+=compress/gzip
NOTEST+=compress/zlib
NOTEST+=crypto/aes
NOTEST+=crypto/block
NOTEST+=crypto/blowfish
NOTEST+=crypto/ocsp
NOTEST+=crypto/rc4
NOTEST+=crypto/rsa
NOTEST+=crypto/subtle
NOTEST+=crypto/tls
NOTEST+=crypto/x509
NOTEST+=debug/dwarf
NOTEST+=debug/elf
NOTEST+=debug/macho
NOTEST+=encoding/base64
NOTEST+=encoding/binary
NOTEST+=encoding/pem
NOTEST+=exp/datafmt
NOTEST+=exp/eval
NOTEST+=expvar
NOTEST+=flag
NOTEST+=fmt
NOTEST+=go/printer
NOTEST+=gob
NOTEST+=http
NOTEST+=image/png
NOTEST+=io
NOTEST+=json
NOTEST+=log
NOTEST+=math
NOTEST+=mime
NOTEST+=mime/multipart
NOTEST+=net
NOTEST+=netchan
NOTEST+=os
NOTEST+=os/signal
NOTEST+=patch
NOTEST+=reflect
NOTEST+=regexp
NOTEST+=rpc
NOTEST+=rpc/jsonrpc
NOTEST+=scanner
NOTEST+=strconv
NOTEST+=strings
NOTEST+=syslog
NOTEST+=tabwriter
NOTEST+=template
NOTEST+=testing/quick
NOTEST+=time
NOTEST+=utf16
NOTEST+=utf8
NOTEST+=websocket
NOTEST+=xml
endif

TEST=\
	$(filter-out $(NOTEST),$(DIRS))

BENCH=\
	$(filter-out $(NOBENCH),$(TEST))

clean.dirs: $(addsuffix .clean, $(DIRS))
install.dirs: $(addsuffix .install, $(DIRS))
nuke.dirs: $(addsuffix .nuke, $(DIRS))
test.dirs: $(addsuffix .test, $(TEST))
bench.dirs: $(addsuffix .bench, $(BENCH))

%.clean:
	+cd $* && gomake clean

%.install:
	+cd $* && gomake install

%.nuke:
	+cd $* && gomake nuke

%.test:
	+cd $* && gomake test

%.bench:
	+cd $* && gomake bench

clean: clean.dirs

install: install.dirs

test:	test.dirs

bench:	bench.dirs ../../test/garbage.bench

nuke: nuke.dirs
	rm -rf "$(GOROOT)"/pkg/*

deps:
	./deps.bash

-include Make.deps

../cmd/cgo.install: ../libcgo.install
