# 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 os os_error.go os_file.go os_time.go os_env.go
O=6
GC=$(O)g
CC=$(O)c -w
AS=$(O)a
AR=$(O)ar

PKG=$(GOROOT)/pkg/os.a

install: $(PKG)

nuke: clean
	rm -f $(PKG)

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

%.$O: %.go
	$(GC) $*.go

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

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


O1=\
	os_error.$O\

O2=\
	os_file.$O\
	os_time.$O\
	os_env.$O\

$(PKG): a1 a2
a1:	$(O1)
	$(AR) grc $(PKG) $(O1)
a2:	$(O2)
	$(AR) grc $(PKG) $(O2)

$(O1): nuke
$(O2): a1

