TARGET	= rom

CPPFLAGS	= -march=mips1
LOADADDR	= 0x00000000

LD_FILE		= ./rmt-elf-rom.ld
PRIVATE_LDFLAGS	= -Ttext=$(LOADADDR)

vpath %.h	.
vpath %.c	.
vpath %.S	.

ASRCS	:=

CSRCS	:=

OBJS	= rom.o

#prefix
CROSS_PREFIX    = /opt/cross/$(ARCH_NAME)/bin/$(CPU_NAME)-cross-elf-

#tools
AS      = $(CROSS_PREFIX)as
LD      = $(CROSS_PREFIX)ld
CC      = $(CROSS_PREFIX)gcc
CPP     = $(CC) -E
AR      = $(CROSS_PREFIX)ar
OBJDUMP = $(CROSS_PREFIX)objdump
SIZE    = $(CROSS_PREFIX)size
GDB     = $(CROSS_PREFIX)gdb

#flags
CPPFLAGS	+= -Wextra -Wstrict-prototypes -pipe -O2 \
			-finline-functions --param max-inline-insns-auto=0 \
			-frename-registers \

ifneq ($(findstring -s,$(MAKEFLAGS)),)
#verbose warning
CPPFLAGS        += -Wall -Winline
endif

CFLAGS          = -Wp,-MD,$(patsubst %.o,%.d,$(notdir $@)) $(CPPFLAGS)
ASFLAGS         = $(CFLAGS)
LDFLAGS         = -T$(LD_FILE)

CROSS_PREFIX	= /opt/cross/rmt/bin/mips-cross-elf-
CC		= $(CROSS_PREFIX)gcc
CPP		= $(CC) -E


.PHONY: all clean
$(TARGET): $(OBJS) $(LD_FILE)
	$(LD) -o $@ $(OBJS) $(LDFLAGS) -Map $(TARGET).map
	$(SIZE) $@

clean:
	rm -f $(TARGET) *.o *.d *.map

#common rules to make
%.s: %.c
	$(CC) -Wp,-MD,$(patsubst %.s,%.d,$(notdir $@)) $(CPPFLAGS) -fverbose-asm $(INCFLAGS) -S $< -o $@

%.i: %.c
	$(CPP) $(CPPFLAGS) $(INCFLAGS) $< > $@

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

%.s: %.S
	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ $(INCFLAGS) $< > $@

%.o: %.S
	$(CC) $(ASFLAGS) -D__ASSEMBLY__ $(INCFLAGS) -c -o $@ $<

ifneq ($(wildcard *.d),)
-include $(wildcard *.d)
endif
