# $Log$
# Revision 2.4  2006/07/30 11:47:38  rich
# Fixes to work with DevkitArm
#
# Revision 2.3  2004/02/22 15:35:00  richq
# Added guidance.
#
# Revision 2.2  2004/02/18 20:09:14  richq
# All modules and map graphics added
#
# Revision 2.1.1.1  2004/02/04 21:49:20  Default
# Doomdark's Revenge GBA
#
#

export DEVKITARM := 1

IMG = ./img
SND = ./snd
include ../gbalib/master.mk
OUTPUTDIR = o
ifdef DEVKITARM
LDFLAGS = -Wl,-Map,$(PROGNAME).map -mthumb-interwork -specs=gba.specs
else
LDFLAGS = -Wl,-Map,lom.map -nostartfiles -Tlnkscript  -mthumb-interwork 
endif
LIBS = -L../gbalib -lquirkygba -Ldata -ldata -L $(IMG) -lddrgfx

#-lgba ../krawall/krawall.lib 

INCLUDES = -I../gbalib 
#-I../krawall


ASFLAGS	= -mthumb-interwork -marm7tdmi

PROJECT = ddr.gba
PROGNAME = ddr

PROGFILES= main.c gfx.c input.c inter.arm.c features.c tokens.c \
	tokendata.c location.c savearea.c objects.c objectdata.c \
	look.c menu.c  title.c blit.arm.c choose.c select.c \
	stepdata.c flames.c characters.c army.c infoscreen.c mapscreen.c \
	fight.c night.c guidance.c

OFILES1 = $(PROGFILES:%.c=%.o)

OFILES = $(OFILES1:%.o=$(OUTPUTDIR)/%.o)


ZIP = zip
ZIPFLAGS =  -rq
ZIPSUFFIX = zip
ifdef usetgz
ZIP = tar
ZIPFLAGS = czf
ZIPSUFFIX = tar.gz
else
ifdef usebzip 
ZIP = tar
ZIPFLAGS =  cjf
ZIPSUFFIX = tar.bz2
endif
endif
.PHONY : clean releasedir dist distsrc

all:
	make -C data
	make -C ../gbalib
	make $(PROJECT)

clean:
	rm -f  $(OFILES)

RELEASEDIR := $(PROGNAME)-

# create a file that contains, eg. ddr-0.68
releasedir :
	@echo -n \
	$(RELEASEDIR)`grep Version readme.txt | cut -d ' ' -f2` \
	> .fname
# remove the dist directory, remake it, then copy all the stuff in there 
	@-rm -rf `cat .fname`
	@-mkdir `cat .fname`

releasedirsrc: releasedir
	@for i in `find . -mindepth 1 -type d -not -name "$(RELEASEDIR)*" -not -regex '.*/.svn/?.*' `; do \
	mkdir `cat .fname`/$${i};\
	done

# make the distribution tar files 
dist: releasedir
	@echo "Building the distribution.."
	@cp $(PROJECT)  `cat .fname`
	@cp readme.txt  `cat .fname`
	@$(ZIP) $(ZIPFLAGS) `cat .fname`.$(ZIPSUFFIX) `cat .fname`
	@echo "... done for" `cat .fname` "!" 
	@-rm -rf `cat .fname` .fname

distsrc: releasedirsrc
	@for i in `find "." -type f -and \( -iname "*.[chs]" -or -iname "*.pcx" \
-or -iname "make*" -or -name "*.xm" -or -name "mkimg*" -or -name "newest.sh" \
-or -name "*.txt" \) -not -name module_data.s -not -regex '.*/.svn/?.*' ` ; do \
	cp $${i} `cat .fname`/$${i};\
	done;
	@echo "... done for" `cat .fname` "!" 
	@$(ZIP) $(ZIPFLAGS) `cat .fname`.src.$(ZIPSUFFIX) `cat .fname`
	@-rm -rf `cat .fname` .fname


# final step, create bin file from elf file
$(PROJECT) : $(PROGNAME).elf
	@$(OBJCOPY) -v -O binary $(PROGNAME).elf $(PROJECT)
	@gbafix $@ -tDoomdarks

# link all the object files into an elf file 
$(PROGNAME).elf : $(OFILES)
	@echo link $(PROGNAME)
	@$(GCC) $(LDFLAGS) -o $(PROGNAME).elf $(OFILES) $(LIBS)


# make object files from the source code
$(OUTPUTDIR)/%.arm.o : %.arm.c
	@echo compile arm $< $(DEBUG)
	@$(GCC) $(INCLUDES) $(CFLAGS) $< -o $@
	
# make object files from the source code
$(OUTPUTDIR)/%.o : %.c
	@echo compile thumb $< $(DEBUG)
	@$(GCC) $(INCLUDES) $(CFLAGS) -mthumb  $< -o $@

# make object files from binary data
$(OUTPUTDIR)/%.all.rodata.o : %.bin
	@echo objcopy rodata bin $<
	@$(OBJCOPY) $(OBJCOPYFLAGS) $< $@


# make .s object file
#$(OUTPUTDIR)/%.o : %.s
#	$(AS) $(ASFLAGS) -o $@ $<

