# 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

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=\
	const.$O\
	fabs.$O\
	hypot.$O\
	pow10.$O\
	runtime.$O\

O2=\
	atan.$O\
	exp.$O\
	floor.$O\
	fmod.$O\
	log.$O\
	sin.$O\
	sqrt.$O\
	tan.$O\

O3=\
	asin.$O\
	atan2.$O\
	pow.$O\
	sinh.$O\

O4=\
	tanh.$O\


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

a1: $(O1)
	$(AR) grc _obj$D/math.a const.$O fabs.$O hypot.$O pow10.$O runtime.$O
	rm -f $(O1)

a2: $(O2)
	$(AR) grc _obj$D/math.a atan.$O exp.$O floor.$O fmod.$O log.$O sin.$O sqrt.$O tan.$O
	rm -f $(O2)

a3: $(O3)
	$(AR) grc _obj$D/math.a asin.$O atan2.$O pow.$O sinh.$O
	rm -f $(O3)

a4: $(O4)
	$(AR) grc _obj$D/math.a tanh.$O
	rm -f $(O4)


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

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

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

packages: _obj$D/math.a

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