#**************************************
#
#  MPC5500_Quick_Start default makefile
#
#**************************************

DIAB_DATA_SOURCE = C:\5.2.1.0\5.2.1.0

# Tools
CC	= dcc
AS	= das
LD	= dld
DEL = rm -f
MKDIR = c:/cygwin/bin/mkdir2 -p

# Paths
SrcMpc = MPC55xx
FreeMaster = freemaster
eTPU = etpu_set2

# Flags
#CFLAGS = -tPPC5554EF:simple -g3 -XO -Xsize-opt -Xkeywords=0x4 \

#use these options for easier debugging
#CFLAGS = -tPPC5554EF:simple -g3 -Xkeywords=0x4 -Xdynamic-init=2 \

CFLAGS = -tPPC5554EF:simple -g3 -Xkeywords=0x4 -XO \
         -I "$(FreeMaster)" \
         -I "$(eTPU)" \
         -I "$(eTPU)\etpu_set2\cpu" \
         -I "$(eTPU)\utils" \
         -I "$(eTPU)\eng_pos" \
         -I "$(eTPU)\knock_window" \
         -I "$(eTPU)\mpc5500" \
         -I "$(DIAB_DATA_SOURCE)\src" \
         -I "MPC5500init-v1.2\src" \
					-I "$(eTPU)\tooth_gen"
         #-Xkeep-assembly-file -Xpass-source   # to see generated assembly code
ASFLAGS = -tPPC5554EF:simple -g

LDFLAGS = -tPPC5554EF:simple -e __start -m6 -lc -lm

# Variables
TARGET3 = intflash
FREEMASTER_H = $(FreeMaster)\freemaster.h $(FreeMaster)\freemaster_cfg.h $(FreeMaster)\freemaster_MPC55xx.h $(FreeMaster)\freemaster_private.h $(FreeMaster)\freemaster_protocol.h $(FreeMaster)\freemaster_tsa.h

# default goal
all:  intflash 

intflash: makedir bin/$(TARGET3).mot

# elf to S-Record conversion
bin/$(TARGET3).mot: bin/$(TARGET3).elf
	ddump -Rv -o $@ $<

# Linking
OBJFILES = bin/freemaster_appcmd.o \
           bin/freemaster_MPC55xx.o \
           bin/freemaster_protocol.o \
           bin/freemaster_rec.o \
           bin/freemaster_scope.o \
           bin/freemaster_serial.o \
           bin/freemaster_tsa.o \
           bin/etpu_util.o \
           bin/etpu_load.o \
           bin/eng_pos_etpu_gct.o \
           bin/etpu_toothgen.o \
           bin/etpu_app_eng_pos.o \
           bin/etpu_knock_window.o \
           bin/fs_gpio.o \
           bin/__start.o \
           bin/mpc5500_asmcfg.o \
           bin/mpc5500_ccdcfg.o \
           bin/mpc5500_SRAM_load.o \
           bin/intc_sw_handlers.o \
           bin/IntcIsrVectors.o \
			
OBJFILES_INTFLASH = $(OBJFILES)  bin/main_intflash.o

bin/$(TARGET3).elf: $(OBJFILES_INTFLASH)
	$(LD) $(LDFLAGS) -o $@ $(OBJFILES_INTFLASH) MPC5500init-v1.2/WR/WR_MPC563M_rom.ld > bin/$(TARGET3).map


# Compiling

bin/main_intflash.o: main.c $(FREEMASTER_H)
	$(CC) $(CFLAGS) -c  "$<" -o $@ -Xnested-interrupts

bin/etpu_util.o: $(eTPU)\utils\etpu_util.c $(eTPU)\mpc5500\typedefs.h
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/etpu_load.o: $(eTPU)\utils\etpu_load.c
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/freemaster_appcmd.o: $(FreeMaster)\freemaster_appcmd.c $(FREEMASTER_H)
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/freemaster_MPC55xx.o: $(FreeMaster)\freemaster_MPC55xx.c $(FREEMASTER_H)
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/freemaster_protocol.o: $(FreeMaster)\freemaster_protocol.c $(FREEMASTER_H)
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/freemaster_rec.o: $(FreeMaster)\freemaster_rec.c $(FREEMASTER_H)
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/freemaster_scope.o: $(FreeMaster)\freemaster_scope.c $(FREEMASTER_H)
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/freemaster_serial.o: $(FreeMaster)\freemaster_serial.c $(FREEMASTER_H)
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/freemaster_tsa.o: $(FreeMaster)\freemaster_tsa.c $(FREEMASTER_H)
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/eng_pos_etpu_gct.o: $(eTPU)\eng_pos\eng_pos_etpu_gct.c $(eTPU)\eng_pos\eng_pos_etpu_gct.h
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/etpu_toothgen.o: $(eTPU)\tooth_gen\etpu_toothgen.c $(eTPU)\tooth_gen\etpu_toothgen.h
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/etpu_app_eng_pos.o: $(eTPU)\eng_pos\etpu_app_eng_pos.c $(eTPU)\eng_pos\etpu_app_eng_pos.h
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/etpu_knock_window.o: $(eTPU)\knock_window\etpu_knock_window.c $(eTPU)\knock_window\etpu_knock_window.h
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/fs_gpio.o: $(eTPU)\mpc5500\fs_gpio.c $(eTPU)\mpc5500\fs_gpio.h
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/mpc5500_ccdcfg.o: MPC5500init-v1.2\src\mpc5500_ccdcfg.c MPC5500init-v1.2\src\mpc5500_ccdcfg.h
	$(CC) $(CFLAGS) -c  "$<" -o $@

bin/IntcIsrVectors.o: MPC5500init-v1.2\src\IntcIsrVectors.c
	$(CC) $(CFLAGS) -c  "$<" -o $@

# Assembling
bin/__start.o: MPC5500init-v1.2/src/__start.s
	$(AS) $(ASFLAGS) -I MPC5500init-v1.2/src -o $@ $<

bin/mpc5500_asmcfg.o: MPC5500init-v1.2/src/mpc5500_asmcfg.s
	$(AS) $(ASFLAGS) -I MPC5500init-v1.2/src -o $@ $<

bin/intc_sw_handlers.o: MPC5500init-v1.2/src/intc_sw_handlers.s
	$(AS) $(ASFLAGS) -I MPC5500init-v1.2/src -o $@ $<

bin/mpc5500_SRAM_load.o: MPC5500init-v1.2/src/mpc5500_SRAM_load.s
	$(AS) $(ASFLAGS) -I MPC5500init-v1.2/src -o $@ $<

.PHONY: makedir
makedir:
	$(MKDIR) bin
#	-mkdir bin



.PHONY: clean
clean:
#	-rm -f bin/*.o
#	-rm -f bin/*.elf
#	-rm -f bin/*.map
#	-rm -f bin/*.mot
	$(DEL) bin/*.o
	$(DEL) bin/*.elf
	$(DEL) bin/*.map
	$(DEL) bin/*.mot
	$(DEL) bin/*.lst
