ODIR=../obj
LDIR =../lib

IDIR =../INC
TOOLCHAIN=../2019.02-05/bin/mips-img-elf-
CC=$(TOOLCHAIN)gcc
OBJCOPY=$(TOOLCHAIN)objcopy
CFLAGS := --freestanding -Os -fno-plt -g
CFLAGS += -I../Baselibc/inc -I$(IDIR) -I$(IDIR)/CRT -iquote $(IDIR) -iquote $(IDIR)/CRT
CFLAGS += -march=r4000 -mgp32 -mfp32 -mel -mabi=32 -G0
CFLAGS += -DMIPS -D_MIPS_ -D_M_MRX000 -DR4000 -UR3000 -D_JAZZ_ -DJAZZ
CFLAGS += "-D__int64=long long" "-D__fastcall="
CFLAGS += "-D__unaligned=__attribute__((packed))"
CFLAGS += -Wno-builtin-declaration-mismatch -Wno-attributes
CFLAGS += -Wno-implicit-function-declaration
LIBS=-nostdlib -lcbase -L../Baselibc -Xlinker --entry=FwSelftest -T kernel.ld

_ENTRY := fwentry.o
_OBJ := selftest.o memtest.o sonictst.o kbdtest.o j4inter.o x4trap.o
_OBJ += j4start.o j4cache.o fwtrap.o monitor.o jxserial.o fwio.o fwprint.o
_OBJ += jxboot.o jxreboot.o jxconfig.o jxdisp.o fwtime.o fwload.o fwsignal.o
_OBJ += jxenvir.o rlefont.o jxhwsup.o jxkbd.o jxmemory.o jxsysid.o jxvendor.o
_OBJ += jxfboot.o xxirql.o jxport.o jxvideo.o
_OBJ += fatboot.o exceptn.o scsiboot.o scsidisk.o xxchkstk.o
_OBJ += ncr53c9x.o
_OBJ += debug.o
_OBJ += xxmvmem.o largeint.o rtlothers.o
_OBJ += cdfsboot.o xxfonts.o pldfont.o eisafunc.o eisapod.o
_OBJ += eisaini.o eisaintr.o eisamisc.o subrout.o omf.o jzsetup.o jzboot.o
_OBJ += jzcommon.o jzconfig.o jzenvir.o jzether.o jzgetpar.o jzmake.o
_OBJ += jzstubs.o jztime.o jxbmp.o bmp.o stubs.o jxtime.o fwusa.o jzusa.o
_OBJ += eisausa.o
ENTRY = $(patsubst %,$(ODIR)/%,$(_ENTRY))
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))

$(OBJ): CFLAGS += #-flto

$(ODIR)/%.o: %.c
	$(CC) -c -o $@ $^ $(CFLAGS)

$(ODIR)/%.o: %.S
	$(CC) -c -o $@ $^ $(CFLAGS)

../ntprom.bin: ../arcfw.bin ../boot0.bin
	php ../fixup.php

../arcfw.bin: ../arcfw.elf
	$(OBJCOPY) -S -O binary --set-section-flags .bss=alloc,load,contents $< $@

../arcfw.elf: $(ENTRY) $(OBJ)
	$(CC) -o $@ $(filter-out $(ODIR)/$(_ENTRY),$^) $(CFLAGS) $(LIBS)

.PHONY: clean

clean:
	rm -f $(ODIR)/*.o ../arcfw.elf ../arcfw.bin