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

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

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
