INC := ../include -I../arch/mips/include
LDS := init.lds
OBJS := init.o
#OBJS += ../lib/lzma/LzmaDec.o
#OBJS += ../lib/lzma/LzmaTools.o
OBJS += ../lib/built-in.o
#OBJS += ../lib/string.o
OBJS += ../common/dlmalloc.o
OBJS += decompress_lzma.o

DECOMPRESS_BASE ?= 0x80100000
LOADBASE ?= 0x82800000
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`)

GENLDSFLAGS := -I$(INC) -DCONFIG_LZMA -DCONFIG_LOAD_BASE=$(LOADBASE) -DPTR_COUNT_SHIFT=$(PTR_COUNT_SHIFT) -ansi -E -P -

CFLAGS := -Os -ffunction-sections -fdata-sections -D__KERNEL__ \
	-DCONFIG_RAM_SIZE_COMP=$(RAM_VERSION_SIZE_COMP) \
	-DCONFIG_DELZMA_FUNC_BASE=$(DELZMA_FUNC_BASE) \
	-DCONFIG_DELZMA_FUNC_SIZE=$(DELZMA_FUNC_SIZE) \
	-DCONFIG_LOAD_BASE=$(LOADBASE) -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

ASFLAGS := $(CFLAGS) -D__ASSEMBLY__

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

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

.PHONY : all
all : $(LDS) decompress.bin
#$(LDS) : include/$(LDS)
#	$(CC) $(GENLDSFLAGS) < include/$(LDS) > $(LDS)
#.depend :
#	$(CC) $(CFLAGS) -MM $(SRC) > .depend
#-include .depend
decompress_lzma.o : decompress_lzma.c
	$(CC) $(CFLAGS) -c decompress_lzma.c -o decompress_lzma.o
init.o : init.S
	$(CC) $(ASFLAGS) -c init.S -o init.o
decompress : $(OBJS) $(LDS)
	$(LD) $(LDFLAGS) $(OBJS) -Map decompress.map -o decompress
decompress.bin : decompress
	$(OBJCPY) $(OBJFLAGS) decompress decompress.bin

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