# LinuxRogue makefile
# by Ashwin N <ashwin@despammed.com> 
# modified for gba...

DEVKITARM := 1
include ../gbalib/master.mk
SHELL = /bin/bash
.SUFFIX : .c 

CC = $(GCC)
PROGNAME := rogue
PROJECT := $(PROGNAME).gba
OUTDIR := obj

# Define either of KEYS_QWERTY or KEYS_DVORAK below
INCLUDE := -I../gbalib -I../gbacurses -Isnd
CFLAGS += -g -DKEYS_QWERTY -O0 -mthumb 

LDFLAGS = -Wl,-Map,$(PROGNAME).map -mthumb-interwork -specs=gba.specs
LIBS := -L../gbacurses -lgbacurses  -L../gbalib -lquirkygba -Lsnd -lsnd

SOURCES = hit.c init.c instruct.c inventory.c level.c machdep.c main.c \
		  message.c monster.c move.c object.c pack.c play.c random.c ring.c \
		  room.c save.c score.c special_hit.c throw.c trap.c use.c zap.c \
		  gbakeys.c gbaui.c keyboard.c

OBJECTS = $(SOURCES:%.c=$(OUTDIR)/%.o)
DFILES = $(SOURCES:%.c=$(OUTDIR)/%.d)
        
.PHONY: clean
all: 
	@[ -d $(OUTDIR) ] || mkdir $(OUTDIR)
	@$(MAKE) -C snd all
	@$(MAKE) $(PROJECT)

relink : 
	rm $(PROGNAME).elf
	$(MAKE) all

clean:
	@$(MAKE) -C snd clean
	rm -f $(OBJECTS) rogue


$(PROGNAME).elf: $(OBJECTS) ../gbacurses/libgbacurses.a
	$(CC) $(OBJECTS) $(LDFLAGS) -o $@ $(LIBS)

$(PROJECT) : $(PROGNAME).elf 
	@$(OBJCOPY) -v -O binary $(PROGNAME).elf $(PROGNAME).tofix.gba
	@$(GBAFIX) $(GBAFIX_FLAGS) -n "$(PROGNAME)" -o $@ $(PROGNAME).tofix.gba
	@-rm $(PROGNAME).tofix.gba

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


$(OUTDIR)/%.o: %.s
	@echo compile thumb $<
	@$(GCC) $(CFLAGS) -mthumb -c -o $@ $<

include $(DFILES)

$(OUTDIR)/%.d: %.c
	$(CC) -MM $(INCLUDE) $(CFLAGS) $< > $@.$$$$; \
    sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
	rm -f $@.$$$$

        
