#
# An implementation of the Continued Fraction Algorithm CLARAC
#
# Dave Barrett
#

PDIR 	= .
# removed because I don't want to recompile every time I change header file
#INCF 	= pfactor.h

CC 	= cyclone
ifdef DEBUG
CFLAGS  = -DBWGC -g  $(EXTRACFLAGS) -pp -save-c
else 
#CFLAGS  = -DBWGC -pg -pp -save-c $(EXTRACFLAGS)
CFLAGS  = -DBWGC -O3 $(EXTRACFLAGS)
endif

BINSRC  = cfrac.cyc
HDR	= primes.h seive.h pfactor.h

PSRC	= pops.cyc pconst.cyc pio.cyc \
	  pabs.cyc pneg.cyc pcmp.cyc podd.cyc phalf.cyc \
	  padd.cyc psub.cyc pmul.cyc pdivmod.cyc psqrt.cyc ppowmod.cyc \
	  atop.cyc ptoa.cyc itop.cyc utop.cyc ptou.cyc errorp.cyc \
	  pfloat.cyc pidiv.cyc pimod.cyc picmp.cyc

FSRC	= primes.cyc pcfrac.cyc pgcd.cyc

FOBJS	= $(PSRC:.cyc=.o)
POBJS	= $(FSRC:.cyc=.o)
OBJS	= $(BINSRC:.cyc=.o) $(PSRC:.cyc=.o) $(FSRC:.cyc=.o)
NC_OBJS = $(addprefix nc_,$(OBJS))

build: cfrac$(EXE)
build-nocheck: cfrac-nochk$(EXE)

cfrac$(EXE):	$(OBJS)
	$(CC) $(CFLAGS) -o cfrac$(EXE) $(OBJS) -lm $(EXTRALIBS)
#	$(CC) -pg -o cfrac $(OBJS) -lm $(EXTRALIBS)

cfrac-nochk$(EXE):	$(NC_OBJS)
	$(CC) $(CFLAGS) --nochecks -o $@ $^ -lm $(EXTRALIBS)

malloc:

bwgc:

SRC	= Makefile $(HDR) $(BINSRC)

pgcd.o:		$(INC)
pcfrac.o:	$(INCF) $(INC) primes.h
primes.o:	primes.h


%.o: %.cyc
	$(CC) $(CFLAGS) -c $<

nc_%.o : %.cyc
	$(CC) $(CFLAGS) --nochecks -c $< -o $@

clean:
		rm -f $(OBJS) $(NC_OBJS)
		rm -f core
		rm -f cfrac$(EXE) cfrac-nochk$(EXE) *~

cleantarget:
	rm cfrac$(EXE) cfrac-nochk$(EXE)

# 
# producer only clean
#
pclean:	
		rm -f $(OBJS)
