VERSION=	40
SOURCE=		CDGS:
SUBSYSNAME=	cdg
MAKEFILE=	lmkfile

SRCDIR=		src/cdg/
FULLPATH=	$(SOURCE)$(SRCDIR)
INTERNAL=	$(SOURCE)include/internal
EXTERNAL=	$(SOURCE)include/libraries
EXTPROTOS=	$(SOURCE)include/clib
EXTPRAGMAS=	$(SOURCE)include/pragmas
DOCPATH=	$(SOURCE)doc/
LOCAL=		work:cdtv/cdg/

LIBDIR=		lib:
INCDIR=		include:+$(INTERNAL)
STRIP=		BLINK QUIET NODEBUG FROM

AFILES=	library.asm \
 init.asm \
 dispatch.asm \
 interrupts.asm \
 modes.asm \
 font.asm \
 setcolors.asm \
 scroll.asm \
 midi.asm \
 ecc.asm \
 debug.asm \
 endmodule.asm

PRAGMAFILE=	$(SUBSYSNAME)_cr_pragmas.h

FDFILE=		$(SUBSYSNAME)_cr_lib.fd

PROTOFILE=	$(SUBSYSNAME)_cr_protos.h

EXTERNHFILE=	cdgprefs.h

EXTERNIFILE=    cdgprefs.i

SFDFILE=	$(SUBSYSNAME)_cr_lib.sfd

MYIFILES=       cdgbase.i debug.i $(EXTERNIFILE)

HARDWARE=	cdgs:include/internal/cdgs_hw.i

BINFILES=	cdg.ld cdg.ld.strip

AFLAGS=		-cfvqrsy
LFLAGS=		BATCH BUFSIZE 1024 SMALLCODE SMALLDATA MAP cdg.map,f,l,h,s,x

MYLIBS=		lib:debug.lib lib:amiga.lib

FIRSTO=		library.o
OFILES=		init.o \
		dispatch.o \
		interrupts.o \
		modes.o \
		font.o \
		setcolors.o \
		scroll.o \
		midi.o \
		ecc.o \
		debug.o \
		endmodule.o

.asm.o:	
	@echo "assembling $*.asm"
	casm -a $*.asm -o $*.o -i $(INCDIR) $(AFLAGS)

.c.o:
	@echo "compiling $*.c"
	lc -cfist -mal -r -v $*.c

all:	$(SUBSYSNAME).ld

$(SUBSYSNAME).ld:	$(FIRSTO) $(OFILES)
	BLINK <with <
	$(LFLAGS)
	FROM $(FIRSTO) $(OFILES)
	TO $(SUBSYSNAME).ld
	LIB $(LIBDIR)debug.lib $(LIBDIR)amiga.lib
	VERBOSE
	<
	$(STRIP) $(SUBSYSNAME).ld TO $(SUBSYSNAME).ld.strip

bumprev:
	bumprev $(VERSION) $(SUBSYSNAME)_rev

release:
	@delete \#?.o
	@copy $(FULLPATH)$(SUBSYSNAME)_rev.rev $(SUBSYSNAME)_rev.rev
	@lmk bumprev
	@lmk pragmas
	@lmk

internal:
	@echo "Copying .ld files to source"
	@copy $(BINFILES) $(FULLPATH)
	
	@echo "Copying .asm files to source"
	@delete $(FULLPATH)\#?.asm FORCE
	@copy $(AFILES) $(FULLPATH)

	@echo "Copying include files to source"
	@delete $(FULLPATH)\#?.i FORCE
	@delete $(FULLPATH)\#?.h FORCE
	@delete $(FULLPATH)\#?.fd FORCE
	@copy $(MYIFILES) $(FULLPATH)
	@copy $(EXTERNHFILE) $(FULLPATH)

	@echo "Copying _rev files to source"
	@copy $(SUBSYSNAME)_rev.rev $(FULLPATH)
	@copy $(SUBSYSNAME)_rev.i $(FULLPATH)
	@copy $(SUBSYSNAME)_rev.h $(FULLPATH)

	@echo "Copying lmkfile to source"
	@delete $(FULLPATH)$(MAKEFILE) FORCE
	@copy $(MAKEFILE) $(FULLPATH)

	@echo "Copying external include files to CDGS includes"
	@delete $(EXTERNAL)/$(EXTERNIFILE) FORCE
	@delete $(EXTERNAL)/$(EXTERNHFILE) FORCE
	@copy $(EXTERNIFILE) $(EXTERNAL)/
	@copy $(EXTERNHFILE) $(EXTERNAL)/
	@copy $(PRAGMAFILE) $(EXTPRAGMAS)/
	@copy $(PROTOFILE) $(EXTPROTOS)/

	@echo "Copying .doc file to CDGS docs"
	@copy $(SUBSYSNAME).doc $(DOCPATH)

	@echo "Done"

pragmas:
	@echo "Making pragmas/protos"
	@execute < <
	failat 21 ;
	makedir ram:sfd ;
	copy $(SFDFILE) ram:sfd ;
	cd ram:sfd ;
	sfd $(SFDFILE) ;
	copy PROTOS/\#? TO $(LOCAL) QUIET;
	copy PRAGMAS/\#? TO $(LOCAL) QUIET;
	copy FD/\#? TO $(LOCAL) QUIET;
	cd ram: ;
	delete ram:sfd/\#? ALL FORCE QUIET;
	delete ram:sfd QUIET ;
	<


docs:
	@echo "Making docs"
	@delete $(SUBSYSNAME).doc
	@delete $(SUBSYSNAME).cat
	@join $(AFILES) TO $(SUBSYSNAME).cat
	@autodoc > $(SUBSYSNAME).doc -a -C -s -l78 $(SUBSYSNAME).cat

library.o:	library.asm $(SUBSYSNAME)_rev.i $(MYIFILES) $(HARDWARE)

init.o:		init.asm  $(MYIFILES) $(HARDWARE)

dispatch.o:	dispatch.asm $(MYIFILES) $(HARDWARE)

interrupts.o:	interrupts.asm $(MYIFILES) $(HARDWARE)

modes.o:	modes.asm $(MYIFILES) $(HARDWARE)

font.o:		font.asm $(MYIFILES) $(HARDWARE)

setcolors.o:	setcolors.asm $(MYIFILES) $(HARDWARE)

scroll.o:	scroll.asm $(MYIFILES) $(HARDWARE)

midi.o:		midi.asm $(MYIFILES) $(HARDWARE)

ecc.o:		ecc.asm $(MYIFILES)

debug.o:	debug.asm debug.i

endmodule.o:	endmodule.asm $(MYIFILES) $(HARDWARE)

	