# 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
O=6
GC=$(O)g
CC=$(O)c -w
AS=$(O)a
AR=$(O)ar

default: packages

clean:
	rm -f *.$O *.a $O.out

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=\
	atoi.$O\
	itoa.$O\
	decimal.$O\
	quote.$O\

O2=\
	ftoa.$O\

O3=\
	atof.$O\

strconv.a: a1 a2 a3

a1:	$(O1)
	$(AR) grc strconv.a atoi.$O itoa.$O decimal.$O quote.$O
	rm -f $(O1)

a2:	$(O2)
	$(AR) grc strconv.a ftoa.$O
	rm -f $(O2)

a3:	$(O3)
	$(AR) grc strconv.a atof.$O
	rm -f $(O3)

newpkg: clean
	$(AR) grc strconv.a

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

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

packages: strconv.a

install: packages
	cp strconv.a $(GOROOT)/pkg/strconv.a

