.SUFFIXES:
ifeq ($(strip $(PSL1GHT)),)
$(error "Please set PSL1GHT in your environment. export PSL1GHT=<path>")
endif

include	$(PSL1GHT)/ppu_rules

BUILD		:=	build
TARGET		:=	$(notdir $(CURDIR))
SOURCE		:=	source PS3_modules
INCLUDE		:=	include

LUA_HEADERS	:=	./include/lauxlib.h ./include/lua.h ./include/lua.hpp \
                ./include/luaconf.h ./include/lualib.h

CFLAGS		:=	-O2 -mregnames -Wall -mcpu=cell $(MACHDEP) $(INCLUDES) -Wl,-mcell
CXXFLAGS	:=	$(CFLAGS) 


ifneq ($(BUILD),$(notdir $(CURDIR)))

export OUTPUT	:=	$(CURDIR)/$(TARGET)
export VPATH	:=	$(foreach dir,$(SOURCE),$(CURDIR)/$(dir)) \
					        $(foreach dir,$(DATA),$(CURDIR)/$(dir))
export BUILDDIR	:=	$(CURDIR)/$(BUILD)
export DEPSDIR	:=	$(BUILDDIR)

CFILES		:= $(foreach dir,$(SOURCE),$(notdir $(wildcard $(dir)/*.c)))
CXXFILES	:= $(foreach dir,$(SOURCE),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES		:= $(foreach dir,$(SOURCE),$(notdir $(wildcard $(dir)/*.S)))
BINFILES	:= $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.bin)))

export OFILES	:=	$(CFILES:.c=.o) \
					        $(CXXFILES:.cpp=.o) \
					        $(SFILES:.S=.o)

export BINFILES	:=	$(BINFILES:.bin=.bin.h)

export INCLUDES	:=	$(foreach dir,$(INCLUDE),-I$(CURDIR)/$(dir)) \
					          -I$(CURDIR)/$(BUILD) -I$(PORTLIBS)/include/ \
					          -I$(PSL1GHT)/ppu/include -I$(PSL1GHT)/ppu/include/sys


all: build install clean

.PHONY: $(BUILD) clean

build:
	@echo build...
	@[ -d $@ ] || mkdir -p $@
	@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile

install:
	@echo Install...
	@mkdir -p $(PORTLIBS)/include/LUA
	@cp -fr $(LUA_HEADERS) $(PORTLIBS)/include/LUA
	@cp -fr $(CURDIR)/*.a $(PORTLIBS)/lib
		
clean:
	@echo Clean...
	@rm -rf $(BUILD) $(OUTPUT).elf $(OUTPUT).self $(OUTPUT).a


else

DEPENDS	:= $(OFILES:.o=.d)

$(OUTPUT).a: $(OFILES)

-include $(DEPENDS)

endif


