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


# DO NOT EDIT.  Automatically generated by gobuild.
# gobuild -m >Makefile

D=

include $(GOROOT)/src/Make.$(GOARCH)
AR=gopack

default: packages

clean:
	rm -rf *.[$(OS)] *.a [$(OS)].out _obj

test: packages
	gotest

coverage: packages
	gotest
	6cov -g $$(pwd) | grep -v '_test\.go:'

%.$O: %.go
	$(GC) -I_obj $*.go

%.$O: %.c
	$(CC) $*.c

%.$O: %.s
	$(AS) $*.s

O1=\
	io.$O\
	pipe.$O\

O2=\
	bytebuffer.$O\

O3=\
	utils.$O\


phases: a1 a2 a3
_obj$D/io.a: phases

a1: $(O1)
	$(AR) grc _obj$D/io.a io.$O pipe.$O
	rm -f $(O1)

a2: $(O2)
	$(AR) grc _obj$D/io.a bytebuffer.$O
	rm -f $(O2)

a3: $(O3)
	$(AR) grc _obj$D/io.a utils.$O
	rm -f $(O3)


newpkg: clean
	mkdir -p _obj$D
	$(AR) grc _obj$D/io.a

$(O1): newpkg
$(O2): a1
$(O3): a2
$(O4): a3

nuke: clean
	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/io.a

packages: _obj$D/io.a

install: packages
	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
	cp _obj$D/io.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/io.a
