# 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 dnsclient.go dnsconfig.go dnsmsg.go fd.go fd_${GOOS}.go ip.go net.go parse.go port.go >Makefile

D=

include $(GOROOT)/src/Make.$(GOARCH)
AR=gopack

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

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

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

O1=\
	fd_$(GOOS).$O\
	parse.$O\

O2=\
	fd.$O\
	ip.$O\

O3=\
	dnsconfig.$O\
	dnsmsg.$O\
	net.$O\

O4=\
	dnsclient.$O\
	port.$O\


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

a1: $(O1)
	$(AR) grc _obj$D/net.a fd_$(GOOS).$O parse.$O
	rm -f $(O1)

a2: $(O2)
	$(AR) grc _obj$D/net.a fd.$O ip.$O
	rm -f $(O2)

a3: $(O3)
	$(AR) grc _obj$D/net.a dnsconfig.$O dnsmsg.$O net.$O
	rm -f $(O3)

a4: $(O4)
	$(AR) grc _obj$D/net.a dnsclient.$O port.$O
	rm -f $(O4)


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

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

nuke: clean
	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/net.a

packages: _obj$D/net.a

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