#******************************************************************************
#
# Freescale Semiconductor Inc.
# (c) Copyright 2004-2008 Freescale Semiconductor, Inc.
# ALL RIGHTS RESERVED.
#
#**************************************************************************//*!
#
# @file		makefile
# @author	b35258
# @version	0.0.2.0
# @date		Aug-20-2011
# 
# @brief	Makefile for projects with MCLIB and FREEMaster also include
#			part in order to flash device and start debuger with correct file
#			Note: This makefile is preconfigured for Cosmic compiler and P&E
#					flash/debug utilieties 
# 
#******************************************************************************/

# Final output directory
OUTPUT_DIR          = FLASH
OUTPUT_FILE_NAME    = MC9S12ZVML128_BLDC_Sensorless
OUT_EXT             = z12
#COMPILER			= cw
COMPILER			= cosmic
DWARF_EXT           = elf


# ---------------------------------------------------------
# Flash/Debug Utils Setup
# ---------------------------------------------------------
UTIL_PATH     		= c:/Program Files/icd12z
DEBUG_FILE 			= icd12zw.exe
DEBUG_CFG       	= STARTUP.ICD
FLASH_FILE  	    = cprogs12zz.exe
FLASH_PROG_ALG 		= freescale_9s12zvm128_1x16x64k_pflash.s12zp
FLASH_CFG_FILE      = Prog.CFG
LOG_FILE            = pe_flash.log
FLASH_OPTION		= Interface=USBMULTILINK Port=USB1

 
# ---------------------------------------------------------
# Application paths specifications
# ---------------------------------------------------------
# Object files output directory
OBJECT_DIR          = FLASH/src

# Application Configuration path specification
APP_CONFIG_PATH     = Config

# General Source path
GSOURCE_PATH		= src/

# FreeMASTER source files path specification
FMASTER_PATH        = src/FreeMASTER

# MCLIB path and object file name specification
LIBRARY_PATH        = "c:\Freescale\AMMCLIB\MC9S12ZVM_AMMCLIB_v1.0.2"

# Board Support Package (BSP) path
BSP_PATH            = src/BSP

# System source path
GENERAL_SYSTEM_SRC_PATH = src/S12ZVM_system

# Peripherals source files path
PERIPH_SRC_PATH     = src/S12ZVM_system/peripherals

SRCDIR      = ./$(GENERAL_SYSTEM_SRC_PATH) ./$(GSOURCE_PATH) ./$(BSP_PATH) ./$(FMASTER_PATH)/S12ZVM ./$(FMASTER_PATH)/src_common ./$(SYSTEM_SRC_PATH) ./$(PERIPH_SRC_PATH) $(LIBRARY_PATH)/src
INCDIR      = $(SYS_INCDIR) -i . -i ./$(GENERAL_SYSTEM_SRC_PATH) -i ./$(GSOURCE_PATH) -i $(LIBRARY_PATH)/include -i ./$(SYSTEM_SRC_PATH) -i ./$(PERIPH_SRC_PATH) -i ./$(APP_CONFIG_PATH) -i ./$(FMASTER_PATH)/S12ZVM -i ./$(FMASTER_PATH)/src_common
OBJDIR      = ./$(OBJECT_DIR)
OUTDIR      = ./$(OUTPUT_DIR)



OBJS = $(foreach gf,$(SRCDIR),$(patsubst $(gf)/%.s,$(OBJDIR)/%.o,$(wildcard $(gf)/*.s)))\
       $(foreach gf,$(SRCDIR),$(patsubst $(gf)/%.c,$(OBJDIR)/%.o,$(wildcard $(gf)/*.c)))\
       $(patsubst %.c,$(OBJDIR)/%.o,$(wildcard *.c))

# ---------------------------------------------------------
# MAKE source code - DO NOT MODIFY !!!
# ---------------------------------------------------------

ifeq ($(COMPILER), cosmic) 
include makefile.csm
else 
include makefile.cw
endif

CC         			= "$(COMPILER_PATH)/$(COMPILER_EXE_FILE)"
AS         			= "$(ASSEMBLER_PATH)/$(ASSEMBLER_EXE_FILE)"
LD         			= "$(LINKER_PATH)/$(LINKER_EXE_FILE)"
HEX_CONV   			= "$(HEX_CONV_PATH)/$(HEX_CONV_EXE_FILE)"
DWARF_CONV 			= "$(DWARF_CONVERTER_PATH)/$(DWARF_CONVERTER_EXE_FILE)"
FU				    = "$(UTIL_PATH)/$(FLASH_FILE)"
DU				    = "$(UTIL_PATH)/$(DEBUG_FILE)"


MAKE_PATH_WIN1	   	= $(shell cygpath -w $(shell pwd))
UTIL_PATH_WIN1	  	= $(shell cygpath -w $(UTIL_PATH))
MAKE_PATH_WIN 		= $(subst \,\\\,$(MAKE_PATH_WIN1))
UTIL_PATH_WIN		= $(subst \,\\\,$(UTIL_PATH_WIN1))

FLASH_CFG_CONT		= echo -e "RE \nCM $(UTIL_PATH_WIN)\\\$(FLASH_PROG_ALG) \nEM \nSS $(MAKE_PATH_WIN)\\\$(OUTPUT_DIR)\\\$(OUTPUT_FILE_NAME).$(DWARF_EXT) \nPM"
DEBUG_STRING  		= echo -e "HLoad $(MAKE_PATH_WIN)\\\$(OUTPUT_DIR)\\\$(OUTPUT_FILE_NAME).$(DWARF_EXT) \nsourcepath ../ \ngo till main"

LINKER_FILE = ./$(LINKER_CONFIG_PATH)/$(LINKER_CONFIG_FILE)

vpath %.c  $(SRCDIR)
vpath %.s  $(SRCDIR)
vpath %.o  $(OBJDIR)

.PHONY: all compile install

all: compile install

compile: $(OUTDIR)/$(OUTPUT_FILE_NAME).$(OUT_EXT)
	@echo ""
	@echo ""
	@echo ""
ifeq ($(COMPILER), cosmic) 
	@echo "###################### Converting to DWARF FORMAT ######################"
	@echo $(DWARF_CONV) -o $(OUTDIR)/$(OUTPUT_FILE_NAME).$(DWARF_EXT) $<
	@$(DWARF_CONV) -o $(OUTDIR)/$(OUTPUT_FILE_NAME).$(DWARF_EXT) $<
	@echo "DONE."
	@echo ""
	@echo ""
	@echo ""
	@echo "################### Converting to MOTOROLA s19 FORMAT ###################"
	@echo $(HEX_CONV) -fm -o $(OUTDIR)/$(OUTPUT_FILE_NAME).$(HEX_CONV_OUT_EXT) $<
	@$(HEX_CONV) -fm -o $(OUTDIR)/$(OUTPUT_FILE_NAME).$(HEX_CONV_OUT_EXT) $<
	@echo "DONE."
endif
	@echo ""
	@echo ""
	@echo ""
	@date
	@echo "########################################################################"
	@echo "# Make File DONE Sucesfully                                            #"
	@echo "########################################################################"
	

$(OBJDIR)/%.o : %.c makefile
	mkdir -p $(OBJDIR)
	$(CC) $(CFLAGS) $<
 
$(OBJDIR)/%.o: %.s makefile
	mkdir -p $(OBJDIR)
	@$(AS) $(ASFLAGS) -c -o $@ $<

$(OUTDIR)/$(OUTPUT_FILE_NAME).$(OUT_EXT): $(OBJS) makefile ./$(LIBRARIES)
	@mkdir -p $(OUTDIR)
	@echo ""
	@echo ""
	@echo ""
	@echo "######################### Linking object files #########################"
	@$(LD) $(LDFLAGS) 
	@echo "DONE."
	

#-include $(addprefix ,$(OBJS:.o=.d))

install:
	@echo "####################### Flashing ... ########################"
	$(FLASH_CFG_CONT) > ./$(OUTPUT_DIR)/$(FLASH_CFG_FILE)
	$(FU) "$(MAKE_PATH_WIN1)\$(OUTPUT_DIR)\$(FLASH_CFG_FILE)" "$(FLASH_OPTION)" /logfile "$(MAKE_PATH_WIN1)\$(OUTPUT_DIR)\$(LOG_FILE)"
	@echo ""
	@echo ""
	@echo "DONE... Flash log file was saved to $(MAKE_PATH_WIN1)\$(OUTPUT_DIR)\$(LOG_FILE)"
	@echo ""
	@echo ""
	@echo ""
	@echo "####################### Starting debuger ... ########################"
	$(DEBUG_STRING) > "$(UTIL_PATH)/$(DEBUG_CFG)"
	$(DU)
	@echo "DONE."
	@echo ""
	@echo ""
	@echo ""
	@date
	@echo "########################################################################"
	@echo "# Make Istall DONE Sucesfully                                            #"
	@echo "########################################################################"

clean:
	rm -f $(wildcard $(OBJDIR)/*.*) $(wildcard $(OUTDIR)/*.*)
	rmdir $(OBJDIR)
	rmdir $(OUTDIR)
	
debug:
	echo $(LD) $(LDFLAGS) 
