# Based on port by xerpi
# Makefile to build the SDL library

TARGET_LIB = libSDL2.a

SOURCES = \
	src/*.c \
	src/atomic/*.c \
	src/audio/*.c \
	src/audio/vita/*.c \
	src/cpuinfo/*.c \
	src/events/*.c \
	src/file/*.c \
	src/haptic/*.c \
	src/haptic/dummy/*.c \
	src/joystick/*.c \
	src/joystick/vita/*.c \
	src/loadso/dummy/*.c \
	src/power/*.c \
	src/power/vita/*.c \
	src/filesystem/vita/*.c \
	src/render/*.c \
	src/render/software/*.c \
	src/render/vitagxm/*.c \
	src/render/vitagles2/*.c \
	src/sensor/*.c \
	src/sensor/vita/*.c \
	src/stdlib/*.c \
	src/thread/*.c \
	src/thread/generic/SDL_systls.c \
	src/thread/vita/*.c \
	src/timer/*.c \
	src/timer/vita/*.c \
	src/video/*.c \
	src/video/vita/*.c \
	src/video/yuv2rgb/*.c \
	src/video/arm/*.S \

OBJS = $(shell echo $(SOURCES) | sed -e 's,\.c,\.o,g' | sed -e 's,\.S,\.o,g')

PREFIX  = arm-dolce-eabi
CC      = $(PREFIX)-gcc
AR      = $(PREFIX)-ar
CFLAGS  = -g -Wl,-q -Wall -O3 -Iinclude \
                        -D__VITA__ -DDOLCEVITA -D__ARM_ARCH=7 -D__ARM_ARCH_7A__ \
                        -mfpu=neon -mcpu=cortex-a9 -mfloat-abi=hard
ASFLAGS = $(CFLAGS)

$(TARGET_LIB): $(OBJS)
	$(AR) rcs $@ $^

clean:
	@rm -f $(TARGET_LIB) $(OBJS)

install: $(TARGET_LIB)
	@mkdir -p "$(DESTDIR)$(DOLCESDK)/arm-dolce-eabi/lib"
	@cp  $(TARGET_LIB) $(DESTDIR)$(DOLCESDK)/arm-dolce-eabi/lib
	@mkdir -p "$(DESTDIR)$(DOLCESDK)/arm-dolce-eabi/include/SDL2"
	@cp include/*.h "$(DESTDIR)$(DOLCESDK)/arm-dolce-eabi/include/SDL2"
	@echo "Installed!"
