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

O_arm=5
O_amd64=6
O_386=8
OS=568vq

O=$(O_$(GOARCH))
GC=$(O)g -I_obj
CC=$(O)c -FVw
AS=$(O)a
AR=6ar

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) $*.go

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

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

O1=\
	iterable.$O\


phases: a1
_obj$D/iterable.a: phases

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


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

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

nuke: clean
	rm -f $(GOROOT)/pkg$D/iterable.a

packages: _obj$D/iterable.a

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