#
#	@(#)Makefile	4.9	9/11/85
#
SCCSID = "@(#)Makefile	4.9 9/11/85"
#
# This high quality math library is intended to run on either a VAX in
# D_floating format or a machine that conforms to the IEEE standard 754
# for double precision floating-point arithmetic.
#
# WARNING: On machines other than the ones mentioned above, run the original
# Version 7 math library, if nothing better is available.
#
# MACH indicates the type of floating point hardware you are using; legal
# values are:
#
# VAX		- for the VAX D_floating format, the default.
# NATIONAL	- for those IEEE machines whose floating point implementation
#		  has similar byte ordering as the NATIONAL 32016 with 32081.
# IEEE		- for other IEEE machines, we hope.
#
#MACH = VAX
MACH = IEEE

CC = cc
AS = /bin/as
CPP = /lib/cpp
C010FLAGS =-O -D${MACH} -UVAX
C020FLAGS =-f -O -D${MACH} -UVAX -Dmc68881
#CSKYFLAGS = -f -O -DSKY -UVAX

#
# invoke object-code optimizer with appropriate MACH definition
#
.SUFFIXES: .so .no .fo
.c.no:
	${CC} -p ${C010FLAGS} -c $*.c
	-ld -X -r $*.o
	mv a.out profiled/$*.no
	${CC} ${C010FLAGS} -c $*.c
	-ld -x -r $*.o
	mv a.out $*.no
.c.fo:
	${CC} -p ${C020FLAGS} -c $*.c
	-ld -X -r $*.o
	mv a.out profiled/$*.fo
	${CC} ${C020FLAGS} -c $*.c
	-ld -x -r $*.o
	mv a.out $*.fo
.s.fo:
	${CPP} -E -DPROF  $*.s | ${AS} -20 -o $*.fo
	-ld -X -r $*.fo
	mv a.out profiled/$*.fo
	${CPP} -E  $*.s | ${AS} -20 -o $*.fo
	-ld -x -r $*.fo
	mv a.out $*.fo

#.c.so:
#	${CC} -p ${CSKYFLAGS} -c $*.c
#	-ld -X -r $*.o
#	mv a.out profiled/$*.so
#	${CC} ${CSKYFLAGS} -c $*.c
#	-ld -x -r $*.o
#	mv a.out $*.so



INSTALL=install

DESTDIR=

#
# Files comprising the standard Math library;
# actually there are more under ${MACH}/ subdirectory.
#
SRCS =	acosh.c asincos.c asinh.c atan.c atanh.c cosh.c erf.c \
	exp.c exp__E.c expm1.c floor.c lgamma.c j0.c j1.c jn.c \
	log.c log10.c log1p.c log__L.c pow.c sinh.c tanh.c

FILES_010 =	acosh.no asincos.no asinh.no atan.no atanh.no cosh.no erf.no \
	exp.no exp__E.no expm1.no floor.no lgamma.no j0.no j1.no jn.no \
	log.no log10.no log1p.no log__L.no pow.no sinh.no tanh.no 

FILES_020 =  atan.fo trig881.fo erf.fo acosh.fo asinh.fo atanh.fo\
	exp__E.fo expm1.fo floor.fo lgamma.fo j0.fo j1.fo jn.fo \
	log1p.fo log__L.fo pow.fo 

#FILES_SKY =	acosh.so asincos.so asinh.so atan.so atanh.so cosh.so erf.so \
#	exp.so exp__E.so expm1.so floor.so lgamma.so j0.so j1.so jn.so \
#	log.so log10.so log1p.so log__L.so pow.so sinh.so tanh.so 

MORE_010 = atan2.no cabs.no cbrt.no support.no trig.no
MORE_020 = atan2.fo cabs.fo cbrt.fo support.fo 
#MORE_SKY = atan2.so cabs.so cbrt.so support.so trig.so

TAGSFILE=tags


#all: libm.a libmm.a libskym.a
all: libm.a libmm.a 

more010:
	cd ${MACH}; make MACH=${MACH} CFLAGS="${C010FLAGS}" ${MORE_010}
more020:
	cd ${MACH}; make MACH=${MACH} CFLAGS="${C020FLAGS}" ${MORE_020}
#moresky:
#	cd ${MACH}; make MACH=${MACH} CFLAGS="${CSKYFLAGS}" ${MORE_SKY}

libm.a libm_p.a: ${FILES_010}  more010
	cd profiled; ar cru ../libm_p.a ${FILES_010} ${MORE_010}
	ar cru libm.a ${FILES_010} ${MORE_010}

libmm.a libmm_p.a: ${FILES_020}  more020
	cd profiled; ar cru ../libmm_p.a  ${FILES_020} ${MORE_020}
	ar cru libmm.a ${FILES_020} ${MORE_020}

#libskym.a libskym_p.a: ${FILES_SKY}  moresky
#	cd profiled; ar cru ../libskym_p.a  ${FILES_SKY} ${MORE_SKY}
#	ar cru libskym.a ${FILES_SKY} ${MORE_SKY}


acosh.no:	acosh.c 
acosh.fo:	acosh.c 
#acosh.so:	acosh.c 
asincos.no:	asincos.c
asincos.fo:	asincos.c
#asincos.so:	asincos.c
asinh.no:	asinh.c 
asinh.fo:	asinh.c 
#asinh.so:	asinh.c 
atan.no:	atan.c 
atan.fo:	atan.c 
#atan.so:	atan.c 
atanh.no:	atanh.c
atanh.fo:	atanh.c
#atanh.so:	atanh.c
cosh.no:	cosh.c 
cosh.fo:	cosh.c 
#cosh.so:	cosh.c 
erf.no:		erf.c 
erf.fo:		erf.c 
#erf.so:		erf.c 
exp.no:		exp.c 
exp.fo:		exp.c 
#exp.so:		exp.c 
exp__E.no:	exp__E.c
exp__E.fo:	exp__E.c
#exp__E.so:	exp__E.c
expm1.no:	expm1.c 
expm1.fo:	expm1.c 
#expm1.so:	expm1.c 
floor.no:	floor.c 
floor.fo:	floor.c 
#floor.so:	floor.c 
lgamma.no:	lgamma.c 
lgamma.fo:	lgamma.c 
#lgamma.so:	lgamma.c 
j0.no:		j0.c
j0.fo:		j0.c
#j0.so:		j0.c
j1.no:		j1.c
j1.fo:		j1.c
#j1.so:		j1.c
jn.no:		jn.c 
jn.fo:		jn.c 
#jn.so:		jn.c 
log.no:		log.c
log.fo:		log.c
#log.so:		log.c
log10.no:	log10.c 
log10.fo:	log10.c 
#log10.so:	log10.c 
log1p.no:	log1p.c 
log1p.fo:	log1p.c 
#log1p.so:	log1p.c 
log__L.no:	log__L.c 
log__L.fo:	log__L.c 
#log__L.so:	log__L.c 
pow.no:		pow.c
pow.fo:		pow.c
#pow.so:		pow.c
sinh.no:	sinh.c 
sinh.fo:	sinh.c 
#sinh.so:	sinh.c 
tanh.no:	tanh.c 
tanh.fo:	tanh.c 
#tanh.so:	tanh.c 

#install: libm.a libm_p.a libmm.a libmm_p.a libskym.a libskym_p.a
install: libm.a libm_p.a libmm.a

#generic
	-rm -f ${DESTDIR}/usr/lib/libnm.a ${DESTDIR}/usr/lib/libnm_p.a
	${INSTALL} libm.a ${DESTDIR}/usr/lib
	ln ${DESTDIR}/usr/lib/libm.a ${DESTDIR}/usr/lib/libnm.a
	ranlib ${DESTDIR}/usr/lib/libm.a
	${INSTALL} libm_p.a ${DESTDIR}/usr/lib
	ln ${DESTDIR}/usr/lib/libm_p.a ${DESTDIR}/usr/lib/libnm_p.a
	ranlib ${DESTDIR}/usr/lib/libm_p.a
# 68881
	-rm -f ${DESTDIR}/usr/lib/libmm.a ${DESTDIR}/usr/lib/libmm_p.a
	${INSTALL} libmm.a ${DESTDIR}/usr/lib
	ranlib ${DESTDIR}/usr/lib/libmm.a
#	${INSTALL} libmm_p.a ${DESTDIR}/usr/lib
#	ranlib ${DESTDIR}/usr/lib/libmm_p.a
# Sky
#	-rm -f ${DESTDIR}/usr/lib/libskym.a ${DESTDIR}/usr/lib/libskym_p.a
#	${INSTALL} libskym.a ${DESTDIR}/usr/lib
#	ranlib ${DESTDIR}/usr/lib/libskym.a
#	${INSTALL} libskym_p.a ${DESTDIR}/usr/lib
#	ranlib ${DESTDIR}/usr/lib/libskym_p.a

tags:
	cwd=`pwd`; \
	for i in ${SRCS}; do \
		ctags -a -f ${TAGSFILE} $$cwd/$$i; \
	done

clean:
	-rm -f *.no *.fo *.so *.o profiled/*  lib*m.a lib*m_p.a tags \
	IEEE/*.?o IEEE/*.o
	
