#CC		:= /cygdrive/d/usr/local/ps3dev/ppu/bin/powerpc64-ps3-elf-gcc
#CXX		:= /cygdrive/d/usr/local/ps3dev/ppu/bin/powerpc64-ps3-elf-g++
#LD		:= /cygdrive/d/usr/local/ps3dev/ppu/bin/powerpc64-ps3-elf-ld 
#OBJCOPY		:= /cygdrive/d/usr/local/ps3dev/ppu/bin/powerpc64-ps3-elf-objcopy
#OBJDUMP		:= /cygdrive/d/usr/local/ps3dev/ppu/bin/powerpc64-ps3-elf-objdump
#AR 		:= /cygdrive/d/usr/local/ps3dev/ppu/bin/powerpc64-ps3-elf-ar
#STRIP		:= /cygdrive/d/usr/local/ps3dev/ppu/bin/powerpc64-ps3-elf-strip

CC		:= ppu-gcc
CXX		:= ppu-g++
LD		:= ppu-ld 
OBJCOPY		:= ppu-objcopy
OBJDUMP		:= ppu-objdump
AR 		:= ppu-ar
STRIP		:= ppu-strip

INCLUDE		= ../lv2/include
LIBSDIR         =
LIBS           	=
BUILD_TYPE     	= debug


CFLAGS = -ffunction-sections -fdata-sections -Os -m64 -fno-builtin -fno-exceptions \
			   -Os -Wall -Wno-strict-aliasing -Wno-multichar $(foreach dir,$(INCLUDE),-I$(dir)) \
			   -DLV2 -DFIRMWARE_4_60_CEX -DCFW -ffreestanding 
CFLAGS += --std=gnu99

ifeq ($(BUILD_TYPE), debug)
CFLAGS += -DDEBUG -DTEST
endif

ifeq ($(BUILD_TYPE), test)
CFLAGS += -DTEST
endif

#CFLAGS += -DPSN_SUPPORT
#CFLAGS += -DPEEK_POKE_TEST 

#LDFLAGS= -T payload.ld -nostartfiles -nostdlib -nodefaultlibs -Wl,-static -Wl,-s -L. $(foreach dir,$(LIBSDIR),-L$(dir)) $(LIBS) \
#	-Wl,--gc-sections -Wl,-Map=payload.map
LDFLAGS= -T payload.ld -nostartfiles -nostdlib -nodefaultlibs -Wl,-static -L. $(foreach dir,$(LIBSDIR),-L$(dir)) $(LIBS) \
	 -Wl,--gc-sections -Wl,-Map=payload.map

OBJS = start.o main.o modulespatch.o \
	../lv2/src/debug.o ../lv2/src/memory.o ../lv2/src/thread.o ../lv2/src/thread_c.o ../lv2/src/process.o \
	../lv2/src/modules.o ../lv2/src/modules_c.o \
	../lv2/src/time.o ../lv2/src/syscall.o

ifeq ($(BUILD_TYPE), debug)
#OBJS += ../debug/src/debug.o ../debug/src/printf.o ../debug/src/debug_util.o
endif

all: payload.bin

objdump: payload.bin
	$(OBJDUMP) -D -EB -b binary -m powerpc:common64 payload.bin

%.bin: %.elf
	$(OBJCOPY) -O binary $< $@

payload.elf: $(OBJS) payload.ld
	$(CC) $(LDFLAGS) -o $@ $(OBJS)

%.o: %.S
	$(CC) $(CFLAGS) -c -o $@ $<

%.o: %.c
	$(CC) $(CFLAGS) -c -o $@ $<

clean:
	rm -f *.o *.elf *.bin *.map *.lzma ../lv2/src/*.o
