DISTFILE =	GameSupport1_0.lha
DIGEST =	md5.Digest

ASMSTUB =	Work:lc/Projekte/AsmStub/AsmStub
MYLIB =		Work:lc/Projekte/MyLib/

LIBS =		LIB:pools.lib LIB:amiga.lib LIB:debug.lib LIB:lc.lib

######################################################################

.PHONY: all

all: gamesupport.library CreateSpriteList CreateSprites

######################################################################

CC      = lc
CFLAGS  = -j104 -v -ms -cfs -r1 -b1 -iinclude/ -dSMALL_CODE -dSMALL_DATA

ASM     = asm
ASFLAGS = -iINCLUDE: -dSMALL_CODE -dSMALL_DATA

######################################################################

.c.o:
	$(CC) $(CFLAGS) $*
	protect $*.o rwd

.a.o:
	$(ASM) $(ASFLAGS) $*.a
	protect $*.o rwd

######################################################################

SOURCES =	Library.c AllocateColors.c FormatString.c Sprites.c \
		Joystick.c HappyBlanker.c Score.c Sleep.c

MISC_SOURCES =	CreateSpriteList.c MakeFiles.c lmkfile Global.h SPRT.h \
		AsmStub gamesupport.doc GameSupport_lib.fd LibraryStart.a \
		LibraryEnd.a Version.h CreateSprites.c COPYRIGHT

HEADERS =	include/libraries/GameSupport.h include/proto/GameSupport.h \
		include/clib/GameSupport_protos.h include/pragmas/GameSupport_pragmas.h

MYLIB_SOURCES =	MyLib/Startup_SAS5.a MyLib/PError.c MyLib/Seek37.c \
		MyLib/ErrorHandle.c MyLib/SPrintf.c MyLib/VSPrintf.c \
		MyLib.h

#########################################################################

OBJS =		Library.o AllocateColors.o FormatString.o Sprites.o \
		Joystick.o HappyBlanker.o Score.o Sleep.o

######################################################################

CreateSpriteList: CreateSpriteList.o MyLib/MyStartup.o MyLib.lib
	blink TO CreateSpriteList LIB MyLib.lib $(LIBS) NODEBUG BATCH SC SD NOICONS <WITH <
		FROM MyLib/MyStartup.o CreateSpriteList.o
	<

CreateSprites: CreateSprites.o MyLib/MyStartup.o MyLib.lib
	blink TO CreateSprites LIB MyLib.lib $(LIBS) NODEBUG BATCH SC SD NOICONS <WITH <
		FROM MyLib/MyStartup.o CreateSprites.o
	<

MakeFiles: MakeFiles.o MyLib/MyStartup.o MyLib.lib
	blink TO MakeFiles LIB MyLib.lib $(LIBS) BATCH SC SD NOICONS <WITH <
		FROM MyLib/MyStartup.o MakeFiles.o
	<

######################################################################

MyLib.h:
	MakeLink FROM MyLib.h TO $(MYLIB)MyLib.h SOFT

MyLib/Startup_SAS5.a:
	-MakeDir MyLib
	MakeLink FROM MyLib/Startup_SAS5.a TO $(MYLIB)startup/Startup_SAS5.a SOFT

MyLib/PError.c:
	-MakeDir MyLib
	MakeLink FROM MyLib/PError.c TO $(MYLIB)DOS/PError.c SOFT

MyLib/ErrorHandle.c:
	-MakeDir MyLib
	MakeLink FROM MyLib/ErrorHandle.c TO $(MYLIB)DOS/ErrorHandle.c SOFT

MyLib/Seek37.c:
	-MakeDir MyLib
	MakeLink FROM MyLib/Seek37.c TO $(MYLIB)DOS/Seek37.c SOFT

MyLib/SPrintf.c:
	-MakeDir MyLib
	MakeLink FROM MyLib/SPrintf.c TO $(MYLIB)Misc/SPrintf.c SOFT

MyLib/VSPrintf.c:
	-MakeDir MyLib
	MakeLink FROM MyLib/VSPrintf.c TO $(MYLIB)Misc/VSPrintf.c SOFT

MyLib.lib: MyLib/PError.o MyLib/ErrorHandle.o MyLib/Seek37.o MyLib/SPrintf.o MyLib/VSPrintf.o
	-Delete MyLib.lib
	oml MyLib.lib r MyLib/PError.o MyLib/ErrorHandle.o MyLib/Seek37.o MyLib/SPrintf.o MyLib/VSPrintf.o

MyLib/MyStartup.o: MyLib/Startup_SAS5.a
	$(AS) $(ASFLAGS) -oMyLib/MyStartup.o MyLib/Startup_SAS5.a

MyLib/PError.o: MyLib/PError.c MyLib.h
MyLib/ErrorHandle.o: MyLib/ErrorHandle.c MyLib.h
MyLib/Seek37.o: MyLib/Seek37.c MyLib.h
MyLib/SPrintf.o: MyLib/SPrintf.c MyLib.h
MyLib/VSPrintf.o: MyLib/VSPrintf.c MyLib.h

######################################################################

.PHONY: doc

doc: gamesupport.doc

gamesupport.doc: $(SOURCES)
	autodoc >gamesupport.doc -C -w -I $(SOURCES)
	Protect gamesupport.doc SUB e

######################################################################

FunctionTable.c: MakeFiles
	MakeFiles C

protos.h: MakeFiles
	MakeFiles H

include/pragmas/GameSupport_pragmas.h: MakeFiles
	MakeFiles PRAGMA

include/clib/GameSupport_protos.h: MakeFiles
	MakeFiles CLIB

GameSupport_lib.fd: MakeFiles
	MakeFiles FD

######################################################################

gamesupport.library: LibraryStart.o $(OBJS) LibraryEnd.o
	blink TO gamesupport.library LIB $(LIBS) NODEBUG BATCH SC SD NOICONS <WITH <
		FROM LibraryStart.o $(OBJS) LibraryEnd.o
	<
	avail >NIL: FLUSH

######################################################################

AsmStub:
	MakeLink FROM AsmStub TO $(ASMSTUB)

######################################################################

StaticSaveds.h: AsmStub
	AsmStub >StaticSaveds.h STATIC SAVEDS

StaticSavedsAsmA0.h: AsmStub
	AsmStub >StaticSavedsAsmA0.h STATIC SAVEDS A0

StaticSavedsAsmA6.h: AsmStub
	AsmStub >StaticSavedsAsmA6.h STATIC SAVEDS A6

StaticSavedsAsmD0A3.h: AsmStub
	AsmStub >StaticSavedsAsmD0A3.h STATIC SAVEDS D0 A3

StaticSavedsAsmA0A1.h: AsmStub
	AsmStub >StaticSavedsAsmA0A1.h STATIC SAVEDS A0 A1

StaticSavedsAsmD0A0A6.h: AsmStub
	AsmStub >StaticSavedsAsmD0A0A6.h STATIC SAVEDS D0 A0 A6

Saveds.h: AsmStub
	AsmStub >Saveds.h SAVEDS

SavedsAsmD0.h: AsmStub
	AsmStub >SavedsAsmD0.h SAVEDS D0

SavedsAsmA0.h: AsmStub
	AsmStub >SavedsAsmA0.h SAVEDS A0

SavedsAsmA6.h: AsmStub
	AsmStub >SavedsAsmA6.h SAVEDS A6

SavedsAsmD0A0.h: AsmStub
	AsmStub >SavedsAsmD0A0.h SAVEDS D0 A0

SavedsAsmA0A1.h: AsmStub
	AsmStub >SavedsAsmA0A1.h SAVEDS A0 A1

SavedsAsmD0A0A1.h: AsmStub
	AsmStub >SavedsAsmD0A0A1.h SAVEDS D0 A0 A1

SavedsAsmD0A0A6.h: AsmStub
	AsmStub >SavedsAsmD0A0A6.h SAVEDS D0 A0 A6

SavedsAsmD0A0A1A2.h: AsmStub
	AsmStub >SavedsAsmD0A0A1A2.h SAVEDS D0 A0 A1 A2

SavedsAsmA0A1A2A3.h: AsmStub
	AsmStub >SavedsAsmA0A1A2A3.h SAVEDS A0 A1 A2 A3

SavedsAsmA0A1A2.h: AsmStub
	AsmStub >SavedsAsmA0A1A2.h SAVEDS A0 A1 A2

######################################################################

$(DIGEST): $(SOURCES) $(MISC_SOURCES) $(MYLIB_SOURCES) $(HEADERS) \
		gamesupport.library CreateSprites CreateSpriteList
	echo >.$(DIGEST) "--> Anything above this line has been hacked! <--*n"
	md5sum >>.$(DIGEST) $(SOURCES)
	md5sum >>.$(DIGEST) $(MISC_SOURCES)
	md5sum >>.$(DIGEST) $(MYLIB_SOURCES)
	md5sum >>.$(DIGEST) $(HEADERS)
	md5sum >>.$(DIGEST) gamesupport.library CreateSprites CreateSpriteList
	pgp -kxa stieber stieber
	join .$(DIGEST) stieber.asc TO $(DIGEST)
	Delete >NIL: .$(DIGEST) stieber.asc
	pgp <>KCON:0/16/640/150/PGP -sat +clearsig=on $(DIGEST)
	Delete >NIL: $(DIGEST)
	Rename >NIL: $(DIGEST).asc $(DIGEST)
	Protect $(DIGEST) SUB e

.PHONY: dist

dist: $(DISTFILE)

$(DISTFILE): $(DIGEST)
	-Delete >NIL: $(DISTFILE)
	lha -AZar a $(DISTFILE) <@<
		$(DIGEST)
		$(SOURCES)
		$(MISC_SOURCES)
		$(MYLIB_SOURCES)
		$(HEADERS)
		gamesupport.library CreateSprites CreateSpriteList
	<

######################################################################

GLOBAL_H =	Global.h protos.h \
		include/libraries/GameSupport.h \
		include/pragmas/GameSupport_pragmas.h \
		include/clib/GameSupport_protos.h \
		Saveds.h SavedsAsmD0.h SavedsAsmA0.h SavedsAsmD0A0.h \
		SavedsAsmA0A1.h SavedsAsmD0A0A1.h SavedsAsmA0A1A2.h \
		SavedsAsmA0A1A2A3.h SavedsAsmD0A0A1A2.h

SPRT_H =	SPRT.h

######################################################################

LibraryStart.o:		LibraryStart.a
LibraryEnd.o:		LibraryEnd.a

Library.o:		Library.c FunctionTable.c Version.h $(GLOBAL_H) \
			StaticSavedsAsmD0A0A6.h StaticSavedsAsmA6.h StaticSaveds.h
AllocateColors.o:	AllocateColors.c $(GLOBAL_H)
FormatString.o:		FormatString.c $(GLOBAL_H) StaticSavedsAsmD0A3.h StaticSavedsAsmA0A1.h
Sprites.o:		Sprites.c $(GLOBAL_H) $(SPRT_H)
Joystick.o:		Joystick.c $(GLOBAL_H)
HappyBlanker.o:		HappyBlanker.c $(GLOBAL_H) StaticSaveds.h
Score.o:		Score.c $(GLOBAL_H)
Sleep.o:		Sleep.c $(GLOBAL_H)
HappyBlanker.o:		HappyBlanker.c $(GLOBAL_H)

MakeFiles.o:		MakeFiles.c

CreateSpriteList.o:	CreateSpriteList.c SPRT.h MyLib.h 
CreateSprites.o:	CreateSprites.c MyLib.h
