
# following variables are set global: cc,ar,arch


ifeq ($(arch),c6x)
libcofdm=$(lib)/libCOFDM_$(arch).a
libs=$(libcofdm) $(cclib)
outobj=-fr$(obj) -ft$(obj)
outexc=-fr$(bin) -ft$(obj)
suffix=.out
else
libs= -L$(lib) -lCOFDM_$(arch) -lm
endif

work=etidemo etitoc prbsdemo crcdemo tpldemo interleavedemo timedemo conv2demo frqdemo tfprdemo framedemo diffmoddemo CIFdemo FICdemo qpskdemo fftdouble framebench rsbench testfft rsdemo testconv fftburrus fftmixed
ifeq ($(arch),c6x)
work=testdemo prbsdemo crcdemo conv2demo fftburrus rsbench interleavedemo framebench  testfft testasm
endif
# running           : conv2demo crcdemo prbsdemo
# compiler errors in: timedemo etidemo frqdemo tfprdemo diffmoddemo CIFdemo FICdemo qpskdemo fftdouble 
# runtime  errors in: fftmixed interleavedemo

ttmp=$(addprefix $(bin),$(work))
targets=$(addsuffix $(suffix),$(ttmp))


all: gfr $(targets)

gfr:
	@echo lib=$(lib)

$(lib)lnk.cmd:
	echo "#HI" > $(lib)lnk.cmd; # create dummy lnk.cmd

$(obj)%.o:%.c
	$(ccobj) $(outobj) $(include) $< -o $@

$(targets): $(lib)libCOFDM_$(arch).a $(lib)lnk.cmd

$(bin)testdemo$(suffix): $(obj)test_demo.o
	$(ccexc)  $< $(libs) -o $@

$(bin)testconv$(suffix): $(obj)test_conv.o
	$(ccexc)  $< $(libs) -o $@

$(bin)etidemo: $(obj)etidemux_demo.o $(includedir)/eti.h
	$(ccexc)  $< $(libs) -o $@

$(bin)prbsdemo: $(obj)prbs_demo.o $(includedir)/prbs.h
	$(ccexc)  $< $(libs) -o $@

$(bin)crcdemo: $(obj)crc_demo.o $(includedir)/crc.h
	$(ccexc)  $< $(libs) -o $@

$(bin)tpldemo: $(obj)tpl_demo.o $(includedir)/tpl.h
	$(ccexc)  $(obj)tpl_demo.o $(libs) -o $@

$(bin)interleavedemo: $(obj)interleave_demo.o
	$(ccexc)  $(obj)interleave_demo.o $(libs) -o $@

$(bin)timedemo: $(obj)time_demo.o
	$(ccexc)  $(obj)time_demo.o $(libs) -o $@

$(bin)frqdemo: $(obj)frq_demo.o
	$(ccexc)  $(obj)frq_demo.o $(libs) -o $@

$(bin)conv2demo: $(obj)conv2_demo.o
	$(ccexc)  $(obj)conv2_demo.o $(libs) -o $@

$(bin)CIFdemo: $(obj)CIFdemo.o
	$(ccexc)  $< $(libs) -o $@

$(bin)framedemo: $(obj)framecon.o
	$(ccexc)  $< $(libs) -o $@

$(bin)framebench: $(obj)framebench.o
	$(ccexc)  $< $(libs) -o $@

$(bin)rsbench: $(obj)rsbench.o
	$(ccexc)  $< $(libs) -o $@

$(bin)rsdemo: $(obj)rs_demo.o
	$(ccexc)  $< $(libs) -o $@

$(bin)tfprdemo: $(obj)tfpr_demo.o
	$(ccexc)  $< $(libs) -o $@

$(bin)fftfloat: $(obj)fft_demo_float.o
	$(ccexc)  $< $(libs) -o $@

$(bin)diffmoddemo: $(obj)diffmoddemo.o
	$(ccexc)  $< $(libs) -o $@

$(bin)qpskdemo: $(obj)qpskdemo.o
	$(ccexc)  $< $(libs) -o $@

$(bin)FICdemo: $(obj)FICdemo.o
	$(ccexc)  $< $(libs) -o $@

$(bin)fftdouble: $(obj)fft_demo_double.o
	$(ccexc)  $< $(libs) -o $@

$(bin)fftmixed: $(obj)fft_demo_mixed.o
	$(ccexc)  $< $(libs) -o $@

$(bin)fftburrus: $(obj)fft_demo_burrus.o
	$(ccexc)  $< $(libs) -o $@

$(bin)testfft: $(obj)test_fft.o
	$(ccexc)  $< $(libs) -o $@

$(bin)testasm: $(obj)test_asm.o
	$(ccexc)  $< $(libs) -o $@

clean:
	(rm core;rm *.o)
