# 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.

include ../../Make.inc

TARG=math

OFILES=\
	abs_$(GOARCH).$O\
	asin_$(GOARCH).$O\
	atan_$(GOARCH).$O\
	atan2_$(GOARCH).$O\
	dim_$(GOARCH).$O\
	exp_$(GOARCH).$O\
	exp2_$(GOARCH).$O\
	expm1_$(GOARCH).$O\
	floor_$(GOARCH).$O\
	frexp_$(GOARCH).$O\
	hypot_$(GOARCH).$O\
	ldexp_$(GOARCH).$O\
	log_$(GOARCH).$O\
	log10_$(GOARCH).$O\
	log1p_$(GOARCH).$O\
	mod_$(GOARCH).$O\
	modf_$(GOARCH).$O\
	remainder_$(GOARCH).$O\
	sin_$(GOARCH).$O\
	sincos_$(GOARCH).$O\
	sqrt_$(GOARCH).$O\
	tan_$(GOARCH).$O\

GOFILES=\
	abs.go\
	acosh.go\
	asin.go\
	asinh.go\
	atan.go\
	atanh.go\
	atan2.go\
	bits.go\
	cbrt.go\
	const.go\
	copysign.go\
	dim.go\
	erf.go\
	exp.go\
	expm1.go\
	floor.go\
	frexp.go\
	gamma.go\
	hypot.go\
	j0.go\
	j1.go\
	jn.go\
	lgamma.go\
	ldexp.go\
	log.go\
	log10.go\
	log1p.go\
	logb.go\
	mod.go\
	modf.go\
	nextafter.go\
	pow.go\
	pow10.go\
	remainder.go\
	signbit.go\
	sin.go\
	sincos.go\
	sinh.go\
	sqrt.go\
	tan.go\
	tanh.go\
	unsafe.go\

include ../../Make.pkg
