#   ----------------------------------------------------------------------------
#   dsp_makefile
#
#   Makefile for HelloWorldDSP.out (Debug and Release versions)
#
#   v1.00
#   ----------------------------------------------------------------------------
#   Copyright (c) Texas Instruments Incorporated 2002-2009
#
#   Use of this software is controlled by the terms and conditions found in the
#   license agreement under which this software has been supplied or provided.
#   ----------------------------------------------------------------------------
#SHELL = /bin/sh

#   ----------------------------------------------------------------------------
#   Base for TI toolchain
#   This may change depending if you are using other versions of the compiler
#   ----------------------------------------------------------------------------

BASE_COMPILER := /home/mitydsp/ti/TI_CGT_C6000_7.4.5
BASE_SABIOS   := /home/mitydsp/bios_5_42_01_09

#   ----------------------------------------------------------------------------
#   Name of the TI compiler and DSP/BIOS builder (Tconf)
#   This usually does not change
#   ----------------------------------------------------------------------------
CC    := cl6x
TCONF := tconf

#   ----------------------------------------------------------------------------
#   Base for DSPLink
#   This may have to be changed depending on your installation paths 
#   and DSPLink version
#   ----------------------------------------------------------------------------
MDK := /home/mitydsp/MDK_current

MITYDSPL138_LIBDBG := $(MDK)/lib/DSP/Debug
MITYDSPL138_SW_LIB := $(MDK)/sw/DSP/lib
TI_EDMA3           := /home/mitydsp/ti/edma3_lld_01_10_00_01/packages/ti/sdo/edma3

#   ============================================================================
#   No changes should be necessary below this line!
#   ============================================================================

#   ----------------------------------------------------------------------------
#   Project name. 
#   This variable can be used to set all source/BIOS/object filenames
#   For clarity, in this example it sets only the .OUT .CMD and .MAP filenames
#   ----------------------------------------------------------------------------
PROJNAME := HelloWorldDSP

#   ----------------------------------------------------------------------------
#   Global variables for building helloDSP
#   Note that common debug, compiler and linker flags are already
#   set in the lower part of this Makefile
#   CSRCS are for C-source files, ASRCS for asm and BIOSTCF is the BIOS TCF file
#   ----------------------------------------------------------------------------
CFLAGS  :=
LDFLAGS :=
CPPSRCS := main_dsp.cpp
CSRCS   := 
ASRCS   :=
BIOSTCF := HelloWorldDSP.tcf
OBJS    :=
LIBS    := -llibc.a \
           -ldspcore.lib \
           -ledma3_drv_bios.lib \
           -ledma3_drv_bios_sample.lib \
           -ledma3_rm_bios.lib \
           -ldsplink.lib \
           -ldsplinkdata.lib \
           -ldsplinkmpcs.lib \
           -ldsplinkmplist.lib \
           -ldsplinkmsg.lib \
           -ldsplinknotify.lib \
           -ldsplinkpool.lib \
           -ldsplinkringio.lib
        
CMDS    := $(PROJNAME).cmd
MAPFILE := $(PROJNAME).map
BIN     := $(PROJNAME).out

#   ----------------------------------------------------------------------------
#   DSP/BIOS generated files
#   ----------------------------------------------------------------------------
BIOSSRC := $(BIOSTCF:%.tcf=%cfg.s62) $(BIOSTCF:%.tcf=%cfg_c.c)
BIOSCMD := $(BIOSTCF:%.tcf=%cfg.cmd)

#   ----------------------------------------------------------------------------
#   Adding DSP/BIOS generated files to the sources and the linker variables
#   ----------------------------------------------------------------------------
CSRCS += $(BIOSTCF:%.tcf=%cfg_c.c)
ASRCS += $(BIOSTCF:%.tcf=%cfg.s62)
CMDS  += $(BIOSCMD)

#   ----------------------------------------------------------------------------
#   DSP/BIOS common flags
#   ----------------------------------------------------------------------------
BFLAGS  := -Dconfig.importPath="$(BASE_SABIOS)/packages; \
           ${MDK}/sw/DSP/templates/criticallink/platforms/MityDSP-L138;./"                      

#   ----------------------------------------------------------------------------
#   All common compiler and linker flags
#   ----------------------------------------------------------------------------

ALL_CFLAGS  := -q -pdr -pdv -pden -ml3 -mv6400+ --disable:sploop $(PD_CFLAGS) $(CFLAGS)
ALL_LDFLAGS := -z -c -q -x $(LDFLAGS)

#   ----------------------------------------------------------------------------
#   Compiler and Linker options for Debug
#   ----------------------------------------------------------------------------
CFLAGS_D  := -g -d"_DEBUG" --no_compress $(DEBUG) $(ALL_CFLAGS)
OBJDIR_D  := Debug
BINDIR_D  := $(OBJDIR_D)
OBJS_D    := $(CSRCS:%.c=$(OBJDIR_D)/%.obj) $(CPPSRCS:%.cpp=$(OBJDIR_D)/%.obj) $(ASRCS:%.s62=$(OBJDIR_D)/%.obj)
LIBS_D    := $(LIBS)
MAPFILE_D := $(OBJDIR_D)/$(MAPFILE)

#   ----------------------------------------------------------------------------
#   Compiler and Linker options for Release
#   ----------------------------------------------------------------------------
CFLAGS_R  := -o3 $(ALL_CFLAGS)
OBJDIR_R  := Release
BINDIR_R  := $(OBJDIR_R)
OBJS_R    := $(CSRCS:%.c=$(OBJDIR_R)/%.obj) $(CPPSRCS:%.cpp=$(OBJDIR_R)/%.obj) $(ASRCS:%.s62=$(OBJDIR_R)/%.obj)
LIBS_R    := $(LIBS)
MAPFILE_R := $(OBJDIR_R)/$(MAPFILE)

#   ----------------------------------------------------------------------------
#   Compiler common include directories 
#   ----------------------------------------------------------------------------
 CINCLUDES := -I$(BASE_COMPILER)/include                       \
              -I$(BASE_SABIOS)/packages/ti/bios/include        \
              -I$(BASE_SABIOS)/packages/ti/rtdx/include/c6000  \
              -I$(MITYDSPL138_SW_LIB)                          \
              -I$(MITYDSPL138_LIBDBG)                          \
              -I$(TI_EDMA3)                                    \
              -I./

#              -I$(BASE_SABIOS)/packages/ti/psl/include         \
#   ----------------------------------------------------------------------------
#   Compiler common symbol definitions 
#   ----------------------------------------------------------------------------
DEFS :=        -dMAX_DSPS=1          \
               -dMAX_PROCESSORS=2    \
               -dID_GPP=1            \
               -dOMAPL1XX            \
               -dPROC_COMPONENT      \
               -dPOOL_COMPONENT      \
               -dNOTIFY_COMPONENT    \
               -dMPCS_COMPONENT      \
               -dRINGIO_COMPONENT    \
               -dMPLIST_COMPONENT    \
               -dMSGQ_COMPONENT      \
               -dMSGQ_ZCPY_LINK      \
               -dCHNL_COMPONENT      \
               -dCHNL_ZCPY_LINK      \
               -dZCPY_LINK           \
               -dPROCID=0            \
               -dDA8XXGEM            \
               -DOS_LINUX            \
               -dDA8XXGEM_INTERFACE=SHMEM_INTERFACE \
               -dPHYINTERFACE=SHMEM_INTERFACE

#   ----------------------------------------------------------------------------
#   Linker common library search path
#   ----------------------------------------------------------------------------
LDINCLUDES := -i$(BASE_COMPILER)/lib                      \
              -i$(TI_EDMA3)/drv/sample/lib/omapl138/Debug \
              -i$(TI_EDMA3)/rm/lib/omapl138/Debug         \
              -i$(TI_EDMA3)/drv/lib/Debug                 \
              -i$(BASE_COMPILER)/include                  \
              -i$(MITYDSPL138_LIBDBG)                     \
              -i$(MITYDSPL138_SW_LIB)                     \
              -i$(BASE_SABIOS)/packages/ti/bios/include   \
              -i$(BASE_SABIOS)/packages/ti/rtdx/lib/c6000 \
              -i$(BASE_SABIOS)/packages/ti/bios/lib       

#              -i$(BASE_SABIOS)/packages/ti/psl/lib        \

#   ----------------------------------------------------------------------------
#   Linker library search path for Debug
#   ----------------------------------------------------------------------------
LDINCLUDES_D := $(LDINCLUDES)

#   ----------------------------------------------------------------------------
#   Linker library search path for Release
#   ----------------------------------------------------------------------------
LDINCLUDES_R := $(LDINCLUDES)

#   ----------------------------------------------------------------------------
#   Compiler and Linker procedure
#   From this point and on changes are highly unlikely.
#   - Be careful if changing the order of the linker object and library files
#   - The DSP/BIOS TCONF build needs to come before everything else
#   - The clean rule also removes all DSP/BIOS generated files
#   ----------------------------------------------------------------------------

.PHONY: all
all: $(BIOSSRC) Debug Release 

$(BIOSSRC): $(BIOSTCF)
	@echo Building DSP/BIOS file...
	@$(BASE_SABIOS)/xdctools/$(TCONF) $(BFLAGS) $< 0

#   ----------------------------------------------------------------------------
#   Building Debug... 
#   ----------------------------------------------------------------------------
.PHONY: Debug
Debug: $(BINDIR_D)/$(BIN)

$(BINDIR_D)/$(BIN) : $(OBJS_D)
	@echo Compiling Debug...
	@$(BASE_COMPILER)/bin/$(CC) $(ALL_LDFLAGS) $(LDINCLUDES_D) -o$@ $? $(LIBS_D) -m$(MAPFILE_D) $(CMDS)

$(OBJDIR_D)/%.obj : %.cpp
	@$(BASE_COMPILER)/bin/$(CC) $(ALL_DEBUG) $(DEFS) $(CFLAGS_D) $(CINCLUDES) -fr$(OBJDIR_D) $<

$(OBJDIR_D)/%.obj : %.c
	@$(BASE_COMPILER)/bin/$(CC) $(ALL_DEBUG) $(DEFS) $(CFLAGS_D) $(CINCLUDES) -fr$(OBJDIR_D) $<

$(OBJDIR_D)/%.obj : %.s62
	@$(BASE_COMPILER)/bin/$(CC) $(ALL_DEBUG) $(DEFS) $(CFLAGS_D) $(CINCLUDES) -fr$(OBJDIR_D) $<

#   ----------------------------------------------------------------------------
#   Building Release... 
#   ----------------------------------------------------------------------------
.PHONY: Release
Release: $(BINDIR_R)/$(BIN)

$(BINDIR_R)/$(BIN) : $(OBJS_R)
	@echo Compiling Release...
	@$(BASE_COMPILER)/bin/$(CC) $(ALL_LDFLAGS) $(LDINCLUDES_R) -o$@ $? $(LIBS_R) -m$(MAPFILE_R) $(CMDS)

$(OBJDIR_R)/%.obj : %.cpp
	@$(BASE_COMPILER)/bin/$(CC) $(DEFS) $(CFLAGS_R) $(CINCLUDES) -fr$(OBJDIR_R) $<

$(OBJDIR_R)/%.obj : %.c
	@$(BASE_COMPILER)/bin/$(CC) $(DEFS) $(CFLAGS_R) $(CINCLUDES) -fr$(OBJDIR_R) $<

$(OBJDIR_R)/%.obj : %.s62
	@$(BASE_COMPILER)/bin/$(CC) $(DEFS) $(CFLAGS_R) $(CINCLUDES) -fr$(OBJDIR_R) $<

.PHONY: clean
clean:
	@rm -f *.cdb
	@rm -f *cfg.*
	@rm -f *cfg_c.*
	@rm -f ./$(OBJDIR_D)/*
	@rm -f ./$(OBJDIR_R)/*



