PREFIX := $(DEVKITARM)/bin/arm-elf-
CC = $(PREFIX)gcc
CXX = $(PREFIX)g++
LD = $(PREFIX)gcc
AS = $(PREFIX)as
AR = $(PREFIX)ar

PRG = FRUIT21

LIBS = -L../../lib ../../lib/gp_common.a ../../lib/gp_smc.a ../../lib/gp_font8.a
LDFLAGS = -s -Wall -Wl,-Map,$(PRG).map

INCLUDES = -I../../src.lowlevel/include -I../../include

#OPTIM = -g -DDEBUG

OPTIM = -O3 -fexpensive-optimizations -fstrict-aliasing \
-falign-functions -fomit-frame-pointer -ffast-math -finline \
-finline-functions -finline-limit=200 -fno-builtin -fno-common \
-fno-exceptions -fweb -frename-registers

CXXFLAGS = $(INCLUDES) $(OPTIM) -D__GP32__ -s -Wall -mcpu=arm920 -mtune=arm920t -mstructure-size-boundary=32 -mno-thumb-interwork

CFLAGS = $(CXXFLAGS) -ffreestanding

OBJS =  enablecache.o gp_gfx.o gp_io.o gp_main.o \
		attack.o board.o book.o eval.o fen.o hash.o list.o main.o material.o \
		move.o move_check.o move_do.o move_evasion.o move_gen.o move_legal.o \
		option.o pawn.o piece.o posix.o protocol.o pst.o pv.o random.o recog.o \
		search.o search_full.o see.o sort.o square.o trans.o util.o value.o \
		vector.o

all:	$(OBJS)
	$(LD) $(LDFLAGS) -specs=gp32.specs $(OBJS) $(LIBS) -o $(PRG).elf
	$(PREFIX)objcopy -O binary $(PRG).elf $(PRG).bin
	$(DEVKITARM)/bin/b2fxec -a Thor -t $(PRG) $(PRG).bin $(PRG).fxe
	../../emu/geepee32 /FXE=$(PRG).fxe /SMC=$(PRG).smc /RUN /nosplash

install:
	gplink put $(PRG).fxe gpmm

clean:
	rm *.o $(PRG).map $(PRG).bin $(PRG).elf
