all: rm-elf postal postal.elf

include $(KOS_BASE)/Makefile.rules

OBJS = main.o

KOS_CPPFLAGS += $(BUILDFLAGS)
KOS_CPPFLAGS += -static -std=gnu++11 -ISoftFloat/source/include -IRSPiX/Inc -IRSPiX/Src -IRSPiX/Src/Blue -IWishPiX -I$(KOS_BASE)/../kos-ports/include/zlib -I$(KOS_BASE)/../kos-ports/zlib/inst/lib -IPostal -IPVR -IAICA -IMAPLE -I. -I$(KOS_BASE)/../kos-ports/include/zlib -I$(KOS_BASE)/../kos-ports/zlib/inst/lib
KOS_CPPFLAGS += $(POSTALFLAGS)

# TEMP
KOS_CPPFLAGS += -fpermissive

KOS_CFLAGS += -ISoftFloat/include
KOS_CFLAGS += -Wno-comment -Wno-write-strings -Wno-conversion-null -Wno-parentheses -w -Wfatal-errors
KOS_LIBS += -Lbuild/lib -lcyan -lgreen -lorange -lblue -lsoftfloat -lsupc++ -lstdc++ -lgcc -lc -lz -lm 

#TODO
FIXME = -Xlinker -lc \
		-Xlinker -lsupc++ \
		-Xlinker -lstdc++ \
		-Xlinker -lgcc \
		-Xlinker -lc \
		-Xlinker -lz \
		-Xlinker -lm \
		-Xlinker -Lbuild/lib \
		-Xlinker --whole-archive -Xlinker -lpostal -Xlinker --no-whole-archive \
		-Xlinker -lkallisti \
		-Xlinker -lcyan \
		-Xlinker -lgreen \
		-Xlinker -lorange \
		-Xlinker -lblue \
		-Xlinker -lsupc++ \
		-Xlinker -lstdc++ \
		-Xlinker -lgcc \
		-Xlinker -lc  \
		-Xlinker -lm  \
		-Xlinker -lpvr \
		-Xlinker -laica \
		-Xlinker -lmaple \
		-Xlinker -lz \
		-Xlinker -lsoftfloat \
		-Xlinker -lkosutils \
		-Xlinker -lpostal \
		-lm

clean-rspix:
	-rm -f *.o
	-rm -f build/lib/libblue.a
	-rm -f build/lib/libgreen.a
	-rm -f build/lib/liborange.a
	-rm -f build/lib/libcyan.a
	-rm -f RSPiX/Src/BLUE/*.a
	-rm -f RSPiX/Src/BLUE/*.o
	-rm -f RSPiX/Src/CYAN/*.a
	-rm -f RSPiX/Src/CYAN/*.o
	-rm -f RSPiX/Src/GREEN/*.a
	-rm -f RSPiX/Src/GREEN/*.o
	-rm -f RSPiX/Src/ORANGE/*.a
	-rm -f RSPiX/Src/ORANGE/*.o	

clean:
	-rm -f output.bin
	-rm -f *.o
	-rm -f build/lib/*.a
	-rm -f Postal/*.o
	-rm -f Postal/*.a
	-rm -f PVR/*.o
	-rm -f PVR/*.a
	-rm -f AICA/*.o
	-rm -f AICA/*.a
	-rm -f MAPLE/*.o
	-rm -f MAPLE/*.a
	-rm -f RSPiX/Src/BLUE/*.a
	-rm -f RSPiX/Src/BLUE/*.o
	-rm -f RSPiX/Src/CYAN/*.a
	-rm -f RSPiX/Src/CYAN/*.o
	-rm -f RSPiX/Src/GREEN/*.a
	-rm -f RSPiX/Src/GREEN/*.o
	-rm -f RSPiX/Src/ORANGE/*.a
	-rm -f RSPiX/Src/ORANGE/*.o
	-rm -f postal.elf $(OBJS)		

dist:
	-rm -f $(OBJS)	
	$(KOS_STRIP) postal.elf
	
rm-elf:
	-rm -f postal.elf	

postal.elf: $(OBJS)	
	$(KOS_CC) $(KOS_CFLAGS) $(KOS_CPPFLAGS) -lc $(KOS_LDFLAGS) -o $@ $(KOS_START) $^ -lz -lm $(KOS_LIBS) $(FIXME)	

main.o: main.cpp
	$(KOS_CC) $(KOS_CFLAGS) $(KOS_CPPFLAGS) -c main.cpp -o main.o	

run: postal.elf
	$(KOS_LOADER) $<

rspix-clean: blue green orange
	-rm -f RSPiX/Src/BLUE/*.a
	-rm -f RSPiX/Src/BLUE/*.o
	-rm -f RSPiX/Src/CYAN/*.a
	-rm -f RSPiX/Src/CYAN/*.o
	-rm -f RSPiX/Src/GREEN/*.a
	-rm -f RSPiX/Src/GREEN/*.o
	-rm -f RSPiX/Src/ORANGE/*.a
	-rm -f RSPiX/Src/ORANGE/*.o
	$(MAKE) -C ./RSPiX/Src/Cyan
	$(MAKE) -C ./RSPiX/Src/Blue	
	$(MAKE) -C ./RSPiX/Src/Orange
	$(MAKE) -C ./RSPiX/Src/Green


rspix: blue green orange
	$(MAKE) -C ./RSPiX/Src/Cyan
	$(MAKE) -C ./RSPiX/Src/Blue	
	$(MAKE) -C ./RSPiX/Src/Orange
	$(MAKE) -C ./RSPiX/Src/Green

blue:
	$(MAKE) -C ./RSPiX/Src/Cyan
	$(MAKE) -C ./RSPiX/Src/Blue

orange:
	$(MAKE) -C ./RSPiX/Src/orange

green:
	$(MAKE) -C ./RSPiX/Src/Green

libpostal:
	cd Postal && make libpostal.a -B
	cd ..

pvr:
	$(MAKE) -C ./PVR

aica:
	$(MAKE) -C ./AICA

maple:
	$(MAKE) -C ./MAPLE
