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

O2=\
	decimaldigit.$O\

unicode.a: a1 a2

a1:	$(O1)
	$(AR) grc unicode.a letter.$O
	rm -f $(O1)

a2:	$(O2)
	$(AR) grc unicode.a decimaldigit.$O
	rm -f $(O2)

newpkg: clean
	$(AR) grc unicode.a

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

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

packages: unicode.a

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

