###############################################################
#
# Makefile for the PalmKobo Application
#
# Targets:
#		all			-	build
#		clean		-	clean everything
#		codeclean	-	clean code (but not resources)
#		rscclean	-	clean resources (but not code)
#
# History:
#	15-Jul-2002	TAG		Created by Toby Gray
#	22-Jan-2003 TAG		Cleaned up a bit for pre-alpha release
#
###################################################################


CC		=	/usr/bin/m68k-palmos-gcc
PalmCFlags	=	-O2 -Wall -fno-exceptions -fno-rtti -g
PALMRC	=	/usr/bin/pilrc
BLDPRC	=	/usr/bin/build-prc
MGEN	=	/usr/bin/m68k-palmos-multigen

# The shell to use
SHELL		  = /bin/sh

# Directory paths
objDir			= Obj
srcDir			= Src
rscDir			= Rsc
incsDir			= /usr/share/prc-tools/sdk/include

# Compile options
CFLAGS			= -I $(rscDir)			\
				  -I $(incsDir)		\
				  -save-temps

# Target info
progName	  = PalmKobo
progPrcFile	  = $(progName).prc
progDefFile	  = $(progName).def


# These are fake targets used to perform certain actions. Use the .PHONY
#  command to make sure they don't get confused with actual filenames
.PHONY : all clean makeObjDir


#############################################################
# Master Builds
#############################################################
all: makeObjDir $(progPrcFile)

clean:
	rm -f *.prc *.i *.ii *.s *.o *.ld $(objDir)/*

codeclean:
	rm -f *.prc *.i *.ii *.s *.o *.ld $(objDir)/*.o

rscclean:
	rm -f $(objDir)/*.bin

makeObjDir :
	if [ ! -e $(objDir) ]; then	 mkdir $(objDir); fi


#############################################################
# Implicit build rules
#############################################################
$(objDir)/%.o :  $(srcDir)/%.cpp
	$(CC) $(PalmCFlags) $(CFLAGS) -c $< -o $@


#############################################################
# Program Build
#############################################################

# ------------------------------------------------------------
# Compile objects
# ------------------------------------------------------------
hdrList = \
		$(srcDir)/PalmKoboRsc.h

objList = \
		$(objDir)/PalmKobo.o $(objDir)/PK_Graphics.o \
		$(objDir)/PK_Game.o $(objDir)/PK_Map.o $(objDir)/PK_Stage.o \
		$(objDir)/PK_Sprite.o $(objDir)/PK_Player.o $(objDir)/PK_Enemy.o \
		$(objDir)/PK_Sound.o $(progName)-sections.o

binList = \
		$(objDir)/Tbmp10f4.bin


# ------------------------------------------------------------
# Link and combine with resources.
# ------------------------------------------------------------
$(progPrcFile): $(objList) $(binList) $(progName)-sections.ld
	$(CC) $(CFLAGS) $(objList) $(progName)-sections.ld -o \
		$(objDir)/$(progName)
	$(BLDPRC) -o $(objDir)/$(progPrcFile) $(progDefFile) \
			$(objDir)/$(progName) $(objDir)/*.bin
	cp $(objDir)/$(progPrcFile) .

$(binList): $(rscDir)/$(progName).rcp $(hdrList)
	$(PALMRC) -I $(srcDir) -I $(rscDir) -o $(objDir) \
			$(rscDir)/$(progName).rcp

$(progName)-sections.o: $(progName)-sections.s
	m68k-palmos-gcc -c $(progName)-sections.s

$(progName)-sections.s $(progName)-sections.ld: $(progName).def
	$(MGEN) $(progName).def
