# 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=/go/

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=\
	comment.$O\

O2=\
	doc.$O\


phases: a1 a2
_obj$D/doc.a: phases

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

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


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

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

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

packages: _obj$D/doc.a

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