SOURCES.f= actorc.f autohf.f biterror.f bwexp.f cgain.f\
cli.f confg.f cor.f dcodcbg.f dcodcbi.f dcodpg.f dcodtau.f\
dcodham.f dectobin.f delay.f delay_nr.f encodham.f gaindcod.f\
gainncod.f gainncd2.f ham.f hexline.f impulse.f intanaly.f\
intsynth.f ldelay.f ldelaynr.f lsp34.f lspd34.f lsptopc.f \
mtrxgen.f movefr.f pack.f packtau.f pctolsp2.f pctorc.f pgain.f \
ptdcode.f ptncode.f pitchvq.f polefilt.f postfilt.f \
pstfilt2.f prefilt.f quantize.f random.f rctopc.f \
setr.f smcbgn.f smpgn.f smt.f unpack.f \
variance.f vdecode.f zerofilt.f

SOURCES.F= celp.F cbsearch.F mexcite.F csub.F psearch.F 

UTIL= clip.f dist.f disto.f find.f iodisk.f mark.f segsnr.f \
specdist.f rctoac.f read_err.f savesg.f wrterr.f

SGIO_LIB= ../diskio/disk_io4.a 
LIBS= $(SGIO_LIB)

PROGRAM= celp

FFLAGS= -O2 -u

OBJECTS= $(SOURCES.f:.f=.o) $(SOURCES.F:.F=.o) $(GOLAY.f:.f=.o) $(UTIL:.f=.o)
DEBUG= $(PROGRAM:%=debug/%)
PROFILE= $(PROGRAM:%=profile/%)
VARIANTS.o= $(OBJECTS)

.KEEP_STATE:
.INIT:
	@-mkdir profile debug

all: $(PROGRAM)
debug: $(DEBUG)
profile: $(PROFILE)
variants: debug profile
$(DEBUG) := FFLAGS= -g -u -C
$(PROFILE) := FFLAGS = -pg -O
$(DEBUG):= VARIANTS.o= $(OBJECTS:%=debug/%)
$(PROFILE):= VARIANTS.o= $(OBJECTS:%=profile/%)


$(PROGRAM) $(DEBUG) $(PROFILE): $$(VARIANTS.o) $(LIBS)
	$(LINK.F) -o $(PROGRAM) $(VARIANTS.o) $(LIBS)

profile/%.o debug/%.o: %.f
	$(COMPILE.f) -o $@ $<
profile/%.o debug/%.o: %.F
	$(COMPILE.F) -o $@ $<

actorc.o:       ccsub.h
autohf.o:       ccsub.com
cgain.o:        ccsub.com
cli.o:          ccsub.com
confg.o:        ccsub.com
dcodtau.o:      ccsub.com
delay_nr.o:     ccsub.h
dist.o:         ccsub.h
disto.o:   ccsub.h
find.o:         ccsub.h
gaindcod.o:     cbgain.tbl
gainncod.o:     cbgain.tbl
gainncd2.o:     cbgain.tbl
impulse.o:      ccsub.com
intanaly.o:     ccsub.com
intsynth.o:     ccsub.com
lsp34.o:        ccsub.h
lsp34.o:        lsp34.tbl
lspd34.o:       ccsub.h
lspd34.o:       lsp34.tbl
lsptopc.o:      ccsub.com
mexcite.o:      ccsub.com cbgain.tbl
pctorc.o:       ccsub.h
pdelay.o:       ccsub.h
pgain.o:        ccsub.com
ptdcode.o:      pgain.tbl
ptncode.o:      pgain.tbl
pitchvq.o:      ccsub.h
postfilt.o:     ccsub.com
pstfilt2.o:     ccsub.com
prefilt.o:	ccsub.com
rctopc.o:       ccsub.h
smcbgn.o:       ccsub.com
smpgn.o:        ccsub.com
smt.o:          ccsub.com
specdist.o:     ccsub.com
vdecode.o:      ccsub.com

codebook: codebook.o
	$(LINK.F) -o codebook codebook.o
pdelay: pdelay.o
	$(LINK.F) -o pdelay pdelay.o
submult: submult.o
	$(LINK.F) -o submult submult.o

clean:
	rm -f $(PROGRAM) $(OBJECTS) codebook pdelay submult core *.l
print:
	print README Makefile *.F *.f *.com *.h *.tbl \
	README.prof *PROF* SIZE
