# 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=\
	type.$O\
	typestring.$O\

O2=\
	value.$O\

O3=\
	deepequal.$O\
	tostring.$O\


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

a1: $(O1)
	$(AR) grc _obj$D/reflect.a type.$O typestring.$O
	rm -f $(O1)

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

a3: $(O3)
	$(AR) grc _obj$D/reflect.a deepequal.$O tostring.$O
	rm -f $(O3)


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

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

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

packages: _obj$D/reflect.a

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