# 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 dir_${GOARCH}_${GOOS}.go env.go error.go file.go stat_${GOARCH}_${GOOS}.go time.go types.go exec.go >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=\
	error.$O\
	types.$O\

O2=\
	env.$O\
	stat_$(GOARCH)_$(GOOS).$O\
	time.$O\

O3=\
	file.$O\

O4=\
	dir_$(GOARCH)_$(GOOS).$O\
	exec.$O\


phases: a1 a2 a3 a4
_obj$D/os.a: phases

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

a2: $(O2)
	$(AR) grc _obj$D/os.a env.$O stat_$(GOARCH)_$(GOOS).$O time.$O
	rm -f $(O2)

a3: $(O3)
	$(AR) grc _obj$D/os.a file.$O
	rm -f $(O3)

a4: $(O4)
	$(AR) grc _obj$D/os.a dir_$(GOARCH)_$(GOOS).$O exec.$O
	rm -f $(O4)


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

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

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

packages: _obj$D/os.a

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