INC := ../include -I../arch/mips/include
LDS := init.lds
OBJS := init.o ../board/realtek/rlxboard/bsp_init.o dma_copy.o
#OBJS += ./dma_copy.o
OBJS += ../board/realtek/rlxboard/dma.o

include ../.config

FLASHBASE ?= 0xb9000000

ifdef UBOOT_AS_BL33
LOADBASE ?= 0x80040000
else
ifdef CONFIG_SELF_EXTRACTING
RAMBASE ?= 0x80100000
else
LOADBASE ?= 0x82800000
endif
endif

PTR_COUNT_SHIFT ?=2

CROSS_COMPILE ?= mips-linux-

CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld
OBJCPY := $(CROSS_COMPILE)objcopy


GCCINC := $(shell $(CC) -print-file-name=include)
GCCLIB := $(shell dirname `$(CC) -print-libgcc-file-name`)
ifdef CONFIG_SELF_EXTRACTING
GENLDSFLAGS := -I$(INC) -DCONFIG_SYS_LOAD_BASE=$(RAMBASE) -DPTR_COUNT_SHIFT=$(PTR_COUNT_SHIFT) -ansi -E -P -
CFLAGS := -Os -ffunction-sections -fdata-sections -D__KERNEL__ \
	-DCONFIG_RAM_OFFSET=$(FLASH_VERSION_SIZE) \
	-DCONFIG_RAM_SIZE=$(RAM_VERSION_SIZE) \
	-DCONFIG_LOAD_BASE=$(RAMBASE) -I$(INC) -fno-builtin \
	-ffreestanding -nostdinc -isystem $(GCCINC) -pipe -G 0 -mabicalls \
	-fPIC -EL -msoft-float -fno-strict-aliasing -mabi=32 -Wall \
	-Wstrict-prototypes -fno-stack-protector -Wno-format-nonliteral \
	-Wno-format-security -fstack-usage
else
GENLDSFLAGS := -I$(INC) -DCONFIG_LOAD_BASE=$(LOADBASE) -DPTR_COUNT_SHIFT=$(PTR_COUNT_SHIFT) -ansi -E -P -

CFLAGS := -Os -ffunction-sections -fdata-sections -D__KERNEL__ \
	-DCONFIG_RAM_OFFSET=$(SYSTEM_INIT_SIZE) \
	-DCONFIG_RAM_SIZE=$(RAM_VERSION_SIZE) \
	-DCONFIG_LOAD_BASE=$(LOADBASE) -I$(INC) -fno-builtin \
	-ffreestanding -nostdinc -isystem $(GCCINC) -pipe -G 0 -mabicalls \
	-fPIC -EL -fno-strict-aliasing -mabi=32 -D__MIPS__ -Wall \
	-Wstrict-prototypes -fno-stack-protector -Wno-format-nonliteral \
	-Wno-format-security -fstack-usage -msoft-float -g -DDEBUG
endif
ASFLAGS := $(CFLAGS) -D__ASSEMBLY__

LDFLAGS := -G 0 -static -n -nostdlib -EL -m elf32ltsmip -T $(LDS) \
	--gc-sections -pie -Bstatic -Ttext $(FLASHBASE) -L $(GCCLIB) -lgcc

OBJFLAGS := --remove-section=.dynsym --gap-fill=0xff -O binary

.PHONY : all
all : $(LDS) init.bin
#$(LDS) : include/$(LDS)
#	$(CC) $(GENLDSFLAGS) < include/$(LDS) > $(LDS)
#.depend :
#	$(CC) $(CFLAGS) -MM $(SRC) > .depend
#-include .depend

dma_copy.o : dma_copy.c
	$(CC) $(CFLAGS) -c dma_copy.c -o dma_copy.o
init.o : init.S
	$(CC) $(ASFLAGS) -c init.S -o init.o
init : $(OBJS) $(LDS)
	$(LD) $(LDFLAGS) $(OBJS) -Map init.map -o init
init.bin : init
	$(OBJCPY) $(OBJFLAGS) init init.bin

spi_nand.o : spi_nand.S
	$(CC) $(ASFLAGS) -c spi_nand.S -o spi_nand.o

.PHONY : clean
clean :
	rm -f *.o *.su .depend init.map init *.bin
	rm -f $(OBJS)
