
PROGRAM = MSM8998_DiamondVoice_ECNS_2mic_Lib_strip
DVEXE = dv.exe
EXEC = $(PROGRAM)

BIN = C:/Qualcomm/Hexagon_SDK/3.2/tools/HEXAGON_Tools/8.0.10/Tools/bin/

CC=$(BIN)hexagon-clang.exe
AR=$(BIN)hexagon-ar.exe
INCLUDES = -IMain -ILib/ECNS -ILib/DiamondVoice_Tx -IFixlib -Icommon/include
QDSPARCH = -mv62 -DNOPRINT -DLinux_make

CCF = -O2
CFLAGS = -Wall $(CCF) $(QDSPARCH) $(INCLUDES) -mhvx-double
LD = $(CC) $(CCF)
LDFLAGS = $(QDSPARCH)
LLIBS = -lhexagon
RM = del

##################################################################
OBJ_DIR = DiamondVoiceTxFW
COM_SRC = common/src
ECNSDIR = Lib/ECNS
DiamondVoiceTxDIR= Lib/DiamondVoice_Tx
MAINDIR = Main

###################################################################
ECNSSRCS = samsungTxECNS.c \
	SamsungTxECNSAEC.c \
	SamsungTxECNSAlg.c \
	SamsungTxECNSBF_GSC.c \
	SamsungTxECNSRegression.c \
	SamsungTxECNSPF.c \
	SamsungRFFT32.c \
	SamsungRFFT64.c \
	SamsungRFFT128.c \
	SamsungRFFT256.c \
	SamsungRFFT512.c
	
ECNSASMSRCS = Mul_Add_Relu_Input_Layer_Hvx128.S	 \
	Mul_Add_Relu_Hidden_Layer1_Hvx128.S \
	Mul_Add_Relu_Hidden_Layer2_Hvx128.S \
	Mul_Output_Layer_Hvx128.S \
	ADD_Output_Layer_Hvx128.S
	
DiamondVoiceTxSRCS = samsungDiamondVoiceECNSTx.c

MainSRC = main.c
###################################################################
OBJS =  $(DiamondVoiceTxOBJS) $(ECNSOBJS) $(ECNSASMOBJS) $(COMOBJS)
MAINOBJ =  $(MainOBJS) $(DiamondVoiceTxOBJS) $(ECNSOBJS) $(ECNSASMOBJS) $(COMOBJS)

COMOBJS = $(OBJ_DIR)/subsys.o
ECNSOBJS = $(ECNSSRCS:%.c=$(OBJ_DIR)/%.o)
ECNSASMOBJS = $(ECNSASMSRCS:%.S=$(OBJ_DIR)/%.o)
DiamondVoiceTxOBJS = $(DiamondVoiceTxSRCS:%.c=$(OBJ_DIR)/%.o)
MainOBJS = $(MainSRC:%.c=$(OBJ_DIR)/%.o)

clean:
	$(RM) $(OBJ_DIR)\*.o $(EXEC).lib $(DVEXE)

all: $(OBJS)
	$(LD) $(LDFLAGS) -o $@ $^ $(LLIBS)

lib: $(OBJS)
	$(AR) r $(EXEC).lib $(OBJS)

exe: $(MAINOBJ)
	$(LD) $(LDFLAGS) -o $(DVEXE) $^ $(LLIBS)

###################################################################
$(OBJ_DIR)/%.o: $(ECNSDIR)/%.c
	$(CC) $(CFLAGS) -c -o $@ $<
	
$(OBJ_DIR)/%.o: $(ECNSDIR)/%.S
	$(CC) $(CFLAGS) -c -o $@ $<	

$(OBJ_DIR)/%.o: $(DiamondVoiceTxDIR)/%.c
	$(CC) $(CFLAGS) -c -o $@ $<

$(OBJ_DIR)/%.o: $(MAINDIR)/%.c
	$(CC) $(CFLAGS) -c -o $@ $<

$(OBJ_DIR)/%.o: %.c
	$(CC) $(CFLAGS) -c -o $@ $<
	
$(OBJ_DIR)/subsys.o: $(COM_SRC)/subsys.c
	$(CC) $(CFLAGS) -c -o $@ $<