# For this Makefile to work, the following prerequisities has to be fulfilled:
# * GNU Makefile has to be installed (http://gnuwin32.sourceforge.net)
# * GNU Sed has to be installed (http://gnuwin32.sourceforge.net/packages/sed.htm)

include Makefile.def

OBJS=$(SRCS:.c=.obj)
CMDFILE=example.cmd

ASMDIR=build/asm
OBJDIR=build/obj
LSTDIR=build/lst
TARDIR=dist

LOGFILE=$(TARDIR)/$(PROG).log
DIAGFILE=diag_df.h

CFLAGS=-c -g -q -pdr -pdv -as -O0 -ml -v28 -fr"$(OBJDIR)" -ff"$(LSTDIR)" -fs"$(ASMDIR)"
INCLUDE=-I${C2000_INCLUDE_DIR}
INCLIBS=-I${C2000_LIBRARY_DIR}
LDFLAGS=-z --disable_clink -m"./$(TARDIR)/$(PROG).map" -o"./$(TARDIR)/$(PROG).out" -stack=0x400 -w -x $(INCLIBS) $(LIBS) $(CMDFILE)

all:
	@$(MAKE) pre
	@$(MAKE) $(PROG)
	@$(MAKE) finalize

.PHONY: pre
pre:
	@$(MAKE) -version
	@$(CC) -version

$(PROG): $(SRCS)
	$(CC) $(CFLAGS) $(INCLUDE) $^ 2>&1

.PHONY: finalize
finalize:
	$(CC) $(LDFLAGS) $(OBJDIR)/*.obj 2>&1
	$(HEX2000) -q $(TARDIR)/$(PROG).out -i -memwidth 16 -romwidth 16 -map $(TARDIR)/$(PROG).mpx -o $(TARDIR)/$(PROG).hex

.PHONY: clean
clean:
	del build\obj\*.obj >NUL 2>&1
	del build\lst\*.lst >NUL 2>&1
	del build\asm\*.asm >NUL 2>&1
	del $(TARDIR)\$(PROG).out >NUL 2>&1
	del $(TARDIR)\$(PROG).map >NUL 2>&1
	del $(TARDIR)\$(PROG).mpx >NUL 2>&1
	del $(TARDIR)\$(PROG).hex >NUL 2>&1

