#
#    Proteus Parallel Architecture Simulator
#    Eric A. Brewer  and  Chris N. Dellarocas
#    Laboratory for Computer Science
#    Massachusetts Institute of Technology
#
#    Module:  Makefile for cycle-counted version of libm.a (libcycm.a)
#
#    Last Modified:  11-25-92  (eab)
#

OBJS = acosh.o asincos.o asinh.o atan.o atanh.o cosh.o erf.o exp.o exp__E.o \
       expm1.o floor.o fmod.o j0.o j1.o jn.o lgamma.o log.o log10.o log1p.o \
       log__L.o pow.o sinh.o tanh.o cbrt.o support.o cabs.o atan2.o tan.o \
       sincos.o

CC = $(INIT_CC)
LIBM = $(INIT_LIBDIR)/libm.a

CFLAGS = -O
AFLAGS = -p
AUG = ../augment

libcycm.a: $(OBJS)
	ar ru libcycm.a $(OBJS)
	ar ts libcycm.a
	./list-procs libcycm.a | sed -e 's/cyc_//' > cycm.lib
	/bin/rm -f *.s

.c.o:
	@ echo File $*.c
	@ $(CC) $(CFLAGS) -S $*.c
	@ $(AUG) $(AFLAGS) $*.s -o aug-$*.s
	@ $(CC) $(CFLAGS) -c aug-$*.s -o $*.o

# the following files expose a bug in the Ultrix (v4.2) cc compiler (v2.1)
# thus use gcc...   if not available, simply remove the files from the
# list in $(OBJS)
jn.o: jn.c
	@ echo File jn.c
	@ gcc $(CFLAGS) -S jn.c
	@ $(AUG) $(AFLAGS) jn.s -o aug-jn.s
	@ gcc $(CFLAGS) -c aug-jn.s -o jn.o

support.o: support.c
	@ echo File support.c
	@ gcc $(CFLAGS) -S support.c
	@ $(AUG) $(AFLAGS) support.s -o aug-support.s
	@ gcc $(CFLAGS) -c aug-support.s -o support.o

# do not augment sincos.c; it already accounts for the time
sincos.o: sincos.c
	@ echo File sincos.c
	@ $(CC) $(CFLAGS) -c sincos.c

asincos.o: asincos.c
	@ echo File asincos.c
	@ $(CC) $(CFLAGS) -c asincos.c

pow.o:  pow.c
	@ echo File pow.c
	@ $(CC) $(CFLAGS) -c pow.c

clean:
	/bin/rm -f *.s *~

reset:
	/bin/rm -f *.o

superreset: clean reset
	/bin/rm -f *.a missing* counted* m.lib


# include files for augment

m.lib: $(LIBM)
	./list-procs $(LIBM) | sort > m.lib 

missing: cycm.lib m.lib
	comm -23 m.lib cycm.lib > missing
	comm -12 m.lib cycm.lib > counted
	sed -e 's/.*/    InsertSymbol("&", SYM_NOCYC);/' < missing > missing.h
	sed -e 's/.*/    InsertSymbol("&", SYM_LIB);/' < counted > counted.h

