1
0
mirror of https://github.com/golang/go synced 2024-10-03 07:21:21 -06:00
go/src/pkg/Makefile

273 lines
4.0 KiB
Makefile
Raw Normal View History

# 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\
archive/zip\
asn1\
big\
bufio\
bytes\
cmath\
compress/bzip2\
compress/flate\
compress/gzip\
compress/lzw \
compress/zlib\
container/heap\
container/list\
container/ring\
container/vector\
crypto\
crypto/aes\
crypto/blowfish\
crypto/cast5\
crypto/cipher\
crypto/des\
crypto/dsa\
crypto/ecdsa\
crypto/elliptic\
crypto/hmac\
crypto/md4\
crypto/md5\
crypto/ocsp\
crypto/openpgp\
crypto/openpgp/armor\
crypto/openpgp/error\
crypto/openpgp/packet\
crypto/openpgp/s2k\
crypto/rand\
crypto/rc4\
crypto/ripemd160\
crypto/rsa\
crypto/sha1\
crypto/sha256\
crypto/sha512\
crypto/subtle\
crypto/tls\
crypto/twofish\
crypto/x509\
crypto/xtea\
debug/dwarf\
debug/macho\
debug/elf\
debug/gosym\
debug/pe\
debug/proc\
ebnf\
encoding/ascii85\
encoding/base32\
encoding/base64\
encoding/binary\
encoding/git85\
encoding/hex\
encoding/line\
encoding/pem\
exec\
exp/datafmt\
exp/draw\
exp/draw/x11\
exp/eval\
expvar\
flag\
fmt\
go/ast\
go/doc\
go/parser\
go/printer\
go/scanner\
go/token\
go/typechecker\
go/types: New Go type hierarchy implementation for AST. This CL defines a new, more Go-like representation of Go types (different structs for different types as opposed to a single Type node). It also implements an ast.Importer for object/archive files generated by the gc compiler tool chain. Besides the individual type structs, the main difference is the handling of named types: In the old world, a named type had a non-nil *Object pointer but otherwise looked no different from other types. In this new model, named types have their own representation types.Name. As a result, resolving cycles is a bit simpler during construction, at the cost of having to deal with types.Name nodes explicitly later. It remains to be seen if this is a good approach. Nevertheless, code involving types reads more nicely and benefits from full type checking. Also, the representation seems to more closely match the spec wording. Credits: The original version of the gc importer was written by Evan Shaw (chickencha@gmail.com). The new version in this CL is based largely on Evan's original code but contains bug fixes, a few simplifications, some restructuring, and was adjusted to use the new type hierarchy. I have added a comprehensive test that imports all packages found under $GOROOT/pkg (with a 3s time-out to limit the run-time of the test). Run gotest -v for details. The original version of ExportData (exportdata.go) was written by Russ Cox (rsc@golang.org). The current version is returning the internal buffer positioned at the beginning of the export data instead of printing the export data to stdout. With the new types package, the existing in-progress typechecker package is deprecated. I will delete it once all functionality has been brought over. R=eds, rog, rsc CC=golang-dev https://golang.org/cl/4314054
2011-04-07 22:40:37 -06:00
go/types\
gob\
hash\
hash/adler32\
hash/crc32\
hash/crc64\
hash/fnv\
html\
http\
http/cgi\
http/pprof\
http/httptest\
image\
Basic image/jpeg decoder. This is not a complete JPEG implementation (e.g. it does not handle progressive JPEGs or restart markers), but I was able to take a photo with my phone, and view the resultant JPEG in pure Go. The decoder is simple, but slow. The Huffman decoder in particular should be easily improvable, but optimization is left to future changelists. Being able to inline functions in the inner loop should also help performance. The output is not pixel-for-pixel identical to libjpeg, although identical behavior isn't necessarily a goal, since JPEG is a lossy codec. There are at least two reasons for the discrepancy. First, the inverse DCT algorithm used is the same as Plan9's src/cmd/jpg, which has different rounding errors from libjpeg's default IDCT implementation. Note that libjpeg actually has three different IDCT implementations: one floating point, and two fixed point. Out of those four, Plan9's seemed the simplest to understand, partly because it has no #ifdef's or C macros. Second, for 4:2:2 or 4:2:0 chroma sampling, this implementation does nearest neighbor upsampling, compared to libjpeg's triangle filter (e.g. see h2v1_fancy_upsample in jdsample.c). The difference from the first reason is typically zero, but sometimes 1 (out of 256) in YCbCr space, or double that in RGB space. The difference from the second reason can be as large as 8/256 in YCbCr space, in regions of steep chroma gradients. Informal eyeballing suggests that the net difference is typically imperceptible, though. R=r CC=golang-dev, rsc https://golang.org/cl/164056
2009-12-16 16:32:17 -07:00
image/jpeg\
image/png\
index/suffixarray\
io\
io/ioutil\
json\
log\
math\
mime\
mime/multipart\
net\
net/dict\
net/textproto\
netchan\
os\
os/signal\
patch\
path\
path/filepath\
rand\
reflect\
regexp\
rpc\
rpc/jsonrpc\
runtime\
runtime/cgo\
runtime/debug\
runtime/pprof\
scanner\
smtp\
sort\
strconv\
strings\
sync\
sync/atomic\
syscall\
syslog\
tabwriter\
template\
testing\
testing/iotest\
testing/quick\
testing/script\
time\
try\
unicode\
utf16\
utf8\
websocket\
xml\
../cmd/cgo\
../cmd/ebnflint\
../cmd/godoc\
../cmd/gofix\
../cmd/gofmt\
../cmd/goinstall\
../cmd/gotest\
../cmd/gotype\
../cmd/govet\
../cmd/goyacc\
../cmd/hgpatch\
ifeq ($(GOOS),linux)
DIRS+=\
os/inotify\
endif
NOTEST+=\
crypto\
crypto/openpgp/error\
debug/proc\
exp/draw/x11\
go/ast\
go/doc\
go/token\
hash\
http/pprof\
http/httptest\
Basic image/jpeg decoder. This is not a complete JPEG implementation (e.g. it does not handle progressive JPEGs or restart markers), but I was able to take a photo with my phone, and view the resultant JPEG in pure Go. The decoder is simple, but slow. The Huffman decoder in particular should be easily improvable, but optimization is left to future changelists. Being able to inline functions in the inner loop should also help performance. The output is not pixel-for-pixel identical to libjpeg, although identical behavior isn't necessarily a goal, since JPEG is a lossy codec. There are at least two reasons for the discrepancy. First, the inverse DCT algorithm used is the same as Plan9's src/cmd/jpg, which has different rounding errors from libjpeg's default IDCT implementation. Note that libjpeg actually has three different IDCT implementations: one floating point, and two fixed point. Out of those four, Plan9's seemed the simplest to understand, partly because it has no #ifdef's or C macros. Second, for 4:2:2 or 4:2:0 chroma sampling, this implementation does nearest neighbor upsampling, compared to libjpeg's triangle filter (e.g. see h2v1_fancy_upsample in jdsample.c). The difference from the first reason is typically zero, but sometimes 1 (out of 256) in YCbCr space, or double that in RGB space. The difference from the second reason can be as large as 8/256 in YCbCr space, in regions of steep chroma gradients. Informal eyeballing suggests that the net difference is typically imperceptible, though. R=r CC=golang-dev, rsc https://golang.org/cl/164056
2009-12-16 16:32:17 -07:00
image/jpeg\
net/dict\
rand\
runtime/cgo\
syscall\
testing\
testing/iotest\
try\
../cmd/cgo\
../cmd/ebnflint\
../cmd/godoc\
../cmd/gofmt\
../cmd/gotest\
../cmd/govet\
../cmd/goyacc\
../cmd/hgpatch\
NOBENCH+=\
container/vector\
# Disable tests that depend on an external network.
ifeq ($(DISABLE_NET_TESTS),1)
NOTEST+=net syslog
endif
# Disable tests that windows cannot run yet.
ifeq ($(GOOS),windows)
NOTEST+=os/signal # no signals
NOTEST+=syslog # no network
NOTEST+=time # no syscall.Kill, syscall.SIGCHLD for sleep tests
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))
testshort.dirs: $(addsuffix .testshort, $(TEST))
bench.dirs: $(addsuffix .bench, $(BENCH))
%.clean:
+$(MAKE) -C $* clean
%.install:
src/pkg/Makefile: trim per-directory make output except on failure Not committed to this but it sure makes the output easier to skim. With this CL: $ make install runtime install sync/atomic install sync install unicode install utf16 install syscall install os ... install ../cmd/govet install ../cmd/goyacc install ../cmd/hgpatch $ make test test archive/tar test archive/zip test asn1 test big test bufio ... test path test path/filepath TEST FAIL reflect gotest rm -f _test/reflect.a 6g -o _gotest_.6 deepequal.go type.go value.go rm -f _test/reflect.a gopack grc _test/reflect.a _gotest_.6 all_test.go:210: invalid type assertion: reflect.NewValue(tt.i).(*StructValue) (non-interface type reflect.Value on left) all_test.go:217: cannot type switch on non-interface value v (type reflect.Value) all_test.go:218: undefined: IntValue all_test.go:221: cannot use 132 (type int) as type reflect.Value in function argument all_test.go:223: cannot use 8 (type int) as type reflect.Value in function argument all_test.go:225: cannot use 16 (type int) as type reflect.Value in function argument all_test.go:227: cannot use 32 (type int) as type reflect.Value in function argument all_test.go:229: cannot use 64 (type int) as type reflect.Value in function argument all_test.go:231: undefined: UintValue all_test.go:234: cannot use 132 (type int) as type reflect.Value in function argument all_test.go:234: too many errors gotest: "/Users/rsc/g/go/bin/6g -I _test -o _xtest_.6 all_test.go tostring_test.go" failed: exit status 1 make[1]: *** [test] Error 2 make: *** [reflect.test] Error 1 R=r, r2 CC=golang-dev https://golang.org/cl/4343046
2011-04-06 13:06:28 -06:00
+@echo install $*
+@$(MAKE) -C $* install >$*/build.out 2>&1 || (echo INSTALL FAIL $*; cat $*/build.out; exit 1)
%.nuke:
+$(MAKE) -C $* nuke
%.test:
src/pkg/Makefile: trim per-directory make output except on failure Not committed to this but it sure makes the output easier to skim. With this CL: $ make install runtime install sync/atomic install sync install unicode install utf16 install syscall install os ... install ../cmd/govet install ../cmd/goyacc install ../cmd/hgpatch $ make test test archive/tar test archive/zip test asn1 test big test bufio ... test path test path/filepath TEST FAIL reflect gotest rm -f _test/reflect.a 6g -o _gotest_.6 deepequal.go type.go value.go rm -f _test/reflect.a gopack grc _test/reflect.a _gotest_.6 all_test.go:210: invalid type assertion: reflect.NewValue(tt.i).(*StructValue) (non-interface type reflect.Value on left) all_test.go:217: cannot type switch on non-interface value v (type reflect.Value) all_test.go:218: undefined: IntValue all_test.go:221: cannot use 132 (type int) as type reflect.Value in function argument all_test.go:223: cannot use 8 (type int) as type reflect.Value in function argument all_test.go:225: cannot use 16 (type int) as type reflect.Value in function argument all_test.go:227: cannot use 32 (type int) as type reflect.Value in function argument all_test.go:229: cannot use 64 (type int) as type reflect.Value in function argument all_test.go:231: undefined: UintValue all_test.go:234: cannot use 132 (type int) as type reflect.Value in function argument all_test.go:234: too many errors gotest: "/Users/rsc/g/go/bin/6g -I _test -o _xtest_.6 all_test.go tostring_test.go" failed: exit status 1 make[1]: *** [test] Error 2 make: *** [reflect.test] Error 1 R=r, r2 CC=golang-dev https://golang.org/cl/4343046
2011-04-06 13:06:28 -06:00
+@echo test $*
+@$(MAKE) -C $* test >$*/test.out 2>&1 || (echo TEST FAIL $*; cat $*/test.out; exit 1)
%.testshort:
src/pkg/Makefile: trim per-directory make output except on failure Not committed to this but it sure makes the output easier to skim. With this CL: $ make install runtime install sync/atomic install sync install unicode install utf16 install syscall install os ... install ../cmd/govet install ../cmd/goyacc install ../cmd/hgpatch $ make test test archive/tar test archive/zip test asn1 test big test bufio ... test path test path/filepath TEST FAIL reflect gotest rm -f _test/reflect.a 6g -o _gotest_.6 deepequal.go type.go value.go rm -f _test/reflect.a gopack grc _test/reflect.a _gotest_.6 all_test.go:210: invalid type assertion: reflect.NewValue(tt.i).(*StructValue) (non-interface type reflect.Value on left) all_test.go:217: cannot type switch on non-interface value v (type reflect.Value) all_test.go:218: undefined: IntValue all_test.go:221: cannot use 132 (type int) as type reflect.Value in function argument all_test.go:223: cannot use 8 (type int) as type reflect.Value in function argument all_test.go:225: cannot use 16 (type int) as type reflect.Value in function argument all_test.go:227: cannot use 32 (type int) as type reflect.Value in function argument all_test.go:229: cannot use 64 (type int) as type reflect.Value in function argument all_test.go:231: undefined: UintValue all_test.go:234: cannot use 132 (type int) as type reflect.Value in function argument all_test.go:234: too many errors gotest: "/Users/rsc/g/go/bin/6g -I _test -o _xtest_.6 all_test.go tostring_test.go" failed: exit status 1 make[1]: *** [test] Error 2 make: *** [reflect.test] Error 1 R=r, r2 CC=golang-dev https://golang.org/cl/4343046
2011-04-06 13:06:28 -06:00
+@echo test $*
+@$(MAKE) -C $* testshort >$*/test.out 2>&1 || (echo TEST FAIL $*; cat $*/test.out; exit 1)
%.bench:
+$(MAKE) -C $* bench
clean: clean.dirs
install: install.dirs
test: test.dirs
testshort: testshort.dirs
bench: bench.dirs ../../test/garbage.bench
nuke: nuke.dirs
rm -rf "$(GOROOT)"/pkg/*
deps:
./deps.bash
echo-dirs:
@echo $(DIRS)
-include Make.deps
runtime/cgo.install: ../cmd/cgo.install