# Makefile -- Make the DSP download image
# This makefile is a simplification of the true dependency situation.
# NO header files dependencies are specified, so you have to do this
# yourself. This is a risky business, but when in doubt, it only takes
# a few minutes to build the whole thing.

######################################
# This is what we want to build:

all : ariel1.x40 ariel2.x40

######################################
# Project-relative directories

coopsCom = .\coopsCom
coopsDsp = .\coopsDsp
appDsp   = .\appDsp
appSup   = .\appSup
appCon   = .\appCon
libdir   = .\libDsp

######################################
# Flags for compiler, assembler and linker

CFLAGS = -v40 -c -q -o -mc -mi -mf -as -eo .o40 -fr $(libdir) -i$(coopsCom) -i$(coopsDsp) -i$(appCon) -dARIEL
AFLAGS = -v40
LFLAGS = -v40   # v4.6
# LFLAGS =		# v4.7

######################################
# Application object files
# This is the only list you have to edit per project

dspobjs = \
	$(libdir)\Act2Tbl.o40 \
	$(libdir)\Action.o40 \
	$(libdir)\ActionSe.o40 \
	$(libdir)\AddaClk.o40 \
	$(libdir)\Ads.o40 \
	$(libdir)\AdsDk.o40 \
	$(libdir)\Apc.o40 \
	$(libdir)\CCMatrix.o40\
	$(libdir)\cnfgdsp1.o40 \
	$(libdir)\cnfgdsp2.o40 \
	$(libdir)\dAddaA2D.o40 \
	$(libdir)\dAddaD2A.o40 \
	$(libdir)\Das.o40 \
	$(libdir)\dAhc.o40 \
	$(libdir)\dDaq.o40 \
	$(libdir)\Delay.o40 \
	$(libdir)\dIir.o40 \
	$(libdir)\Dio.o40 \
	$(libdir)\dLms.o40 \
	$(libdir)\dMrf.o40 \
	$(libdir)\dPsd.o40 \
	$(libdir)\dRecord.o40 \
	$(libdir)\dRls.o40 \
	$(libdir)\dTfe.o40 \
	$(libdir)\dUfg.o40 \
	$(libdir)\Fbkgen.o40 \
	$(libdir)\fftdsp.o40 \
	$(libdir)\filter.o40 \
	$(libdir)\Fgc.o40\
	$(libdir)\Gres.o40 \
	$(libdir)\GresII.o40 \
	$(libdir)\Ldt.o40 \
	$(libdir)\Notch.o40 \
	$(libdir)\PiServo.o40 \
	$(libdir)\Ramp.o40 \
	$(libdir)\Rand.o40 \
	$(libdir)\Rdt.o40 \
	$(libdir)\RealFFT.o40 \
	$(libdir)\Refgen.o40 \
	$(libdir)\RmsMonit.o40 \
	$(libdir)\SampHold.o40 \
	$(libdir)\Scal2Vec.o40 \
	$(libdir)\SysDsp.o40 \
	$(libdir)\TvcServo.o40 \
	$(libdir)\UpSample.o40 \
	$(libdir)\Vector.o40 \
	$(libdir)\VRamp.o40 \
	$(libdir)\Watchdog.o40

######################################
# Coops kernel object files

coopsobjs = \
	$(libdir)\main.o40 \
	$(libdir)\beap.o40 \
	$(libdir)\c40Timer.o40 \
	$(libdir)\class.o40 \
	$(libdir)\closure.o40 \
	$(libdir)\dict.o40 \
	$(libdir)\dspobjec.o40 \
	$(libdir)\FloatTer.o40 \
	$(libdir)\IntTermi.o40 \
	$(libdir)\fork.o40 \
	$(libdir)\generic.o40 \
	$(libdir)\list.o40 \
	$(libdir)\link.o40 \
	$(libdir)\message.o40 \
	$(libdir)\method.o40 \
	$(libdir)\numcvt.o40 \
	$(libdir)\object.o40 \
	$(libdir)\sequence.o40 \
	$(libdir)\sched.o40 \
	$(libdir)\strnew.o40 \
	$(libdir)\syncinpu.o40 \
	$(libdir)\syncoutp.o40 \
	$(libdir)\c40Asm.o40 \
	$(libdir)\task.o40 \
	$(libdir)\c40Clock.o40 \
	$(libdir)\tcr.o40 \
	$(libdir)\terminal.o40 \
	$(libdir)\c40Excep.o40\
	$(libdir)\c40Memor.o40 \
	$(libdir)\c40Rupt.o40 \
	$(libdir)\uptipc.o40 \
	$(libdir)\vicvac.o40

######################################
# Rules

.SUFFIXES: .x40 .o40 .a

{$(coopsCom)}.c{$(libdir)}.o40:         # For "C" files in coopsCom
	cl30 $(CFLAGS)  $<

{$(coopsDsp)}.c{$(libdir)}.o40:         # For "C" files in coopsDsp
	cl30 $(CFLAGS)  $<

{$(coopsCom)}.a{$(libdir)}.o40:         # For "A" files in coopsCom
	asm30 $(AFLAGS) $< $@

{$(coopsDsp)}.a{$(libdir)}.o40:         # For "A" files in coopsDsp
	asm30 $(AFLAGS) $< $@

{$(appDsp)}.c{$(libdir)}.o40:           # For "C" files in appDsp
	cl30 $(CFLAGS)  $<

{$(appCon)}.c{$(libdir)}.o40:           # For "C" files in appCon
	cl30 $(CFLAGS)  $<

{$(appDsp)}.a{$(libdir)}.o40:           # For "A" files in appDsp
	asm30 $(AFLAGS) $< $@

######################################
# Dependancies
# The archiver is necessary because the linker
# can't deal with long lists of file names.

ariel1.x40 : $(coopsobjs) $(dspobjs)
	del $(libdir)\library.lib
	ar30 -ae $(libdir)\library.lib $(libdir)\*.o40
	lnk30 $(LFLAGS) $(libdir)\main.o40 $(libdir)\cnfgdsp1.o40 -o $@ -cr -l $(libdir)\library.lib -l rts40.lib $(appCon)\C40Link.txt

ariel2.x40 : $(coopsobjs) $(dspobjs)
	del $(libdir)\library.lib
	ar30 -ae $(libdir)\library.lib $(libdir)\*.o40
	lnk30 $(LFLAGS) $(libdir)\main.o40 $(libdir)\cnfgdsp2.o40 -o $@ -cr -l $(libdir)\library.lib -l rts40.lib $(appCon)\C40Link.txt

