
GBADEVROOT  =   k:/gba/gbadev/
GCCROOT     =   i:/gnu/cygwin/latest/

# gcc version + target
GCCLIBVER   =   2.95.2
TARGET      =   arm-elf

# your startup code+linker script
LDSCRIPT    =   arm-agbbin.x
START       =   $(GBADEVROOT)lib/crt0.o

# your 'private' library lib/include dir
LIBPATH  =   $(GBADEVROOT)lib/
INCPATH  =   $(GBADEVROOT)include/

MAPFILE    =   main.map
DEST       =   main.elf
DESTBIN    =   main.gba

OBJS	   =   main.o modfile.o
LIBS	   =   -lafm -lgcc

AS          =   $(TARGET)-as
ASFLAGS     =   -I$(GBADEVROOT)include -mthumb-interwork

CC          =   $(TARGET)-gcc
CCFLAGS     =   -mcpu=arm7tdmi -march=armv4t -mtune=arm7tdmi -msoft-float \
                -I$(GCCROOT)usr/local/lib/gcc-lib/$(TARGET)/$(GCCLIBVER) \
                -I$(INCPATH)afm -I$(LIBPATH)afm \
                -I$(INCPATH) -I$(LIBPATH) \
                -Wa,-I$(INCPATH) -Wa,-I$(LIBPATH) \
                -mthumb-interwork \
                -nostdlib -fno-builtin -ffreestanding \
                -fno-sjlj-exceptions -fno-exceptions -fno-common \
                -fshort-enums -mstructure-size-boundary=32 \
                -O2 -Wall -Wno-inline

LD          =   $(TARGET)-ld
LDFLAGS     =   -Map $(MAPFILE) -nostartfiles \
                -L$(GBADEVROOT)ldscripts --script $(LDSCRIPT) \
                --library-path=$(LIBPATH) \
                --library-path=$(LIBPATH)afm \
                --library-path=$(GCCROOT)usr/local/lib/gcc-lib/$(TARGET)/$(GCCLIBVER) \
                --library-path=$(GCCROOT)usr/local/$(TARGET)/lib

OBJCOPY     =   $(TARGET)-objcopy

all:    $(OBJS) link elf2bin

main.o:
				$(CC) $(CCFLAGS) -c $*.c -o $*.o 2> error.log

modfile.o: zak.mod
				$(LD) -A elf32-littlearm --format binary --oformat elf32-littlearm zak.mod -o modfile.o -r -EL -T bin2rodata.x

link: $(OBJS)
				$(LD) $(LDFLAGS) $(START) $(OBJS) $(LIBS) -o $(DEST) 2> error.log

elf2bin: $(DEST)
				$(OBJCOPY) -v -O binary $(DEST) $(DESTBIN) 2> error.log

clean:
				$(RM) -f $(OBJS) $(MAPFILE) $(DEST) $(DESTBIN) error.log
