#audio_hal

INCLUDE_DIRS = \
	-I hardware/libhardware/include \
	-I hardware/libhardware_legacy/include \
	-I system/media/audio/include \
	-I system/media/alsa_utils/include \
	-I system/core/libcutils/include \
	-I system/core/libutils/include \
	-I system/core/libsystem/include \
	-I system/core/liblog/include \
	-I system/core/libprocessgroup/include \
	-I external/expat \
	-I dump/audio_dump \
	-I whale \
	-I whale/record_process \
	-I whale/debug \
	-I whale/record_nr \
	-I whale/audio_param \
	-I whale/tinycompress_util \
	-I whale/preprocessing \
	-I whale/audiotester \
	-I whale/smartamp

ifeq ($(AUDUO_PLATFORM),normal)
INCLUDE_DIRS += \
	-I whale/platform/normal/include \
	-I whale/platform/normal/smart_amp/inc \
	-I whale/platform/normal/compress_simu \
	-I whale/platform/normal/vb_effect/v2 \
	-I whale/platform/normal/vb_pga \
	-I whale/platform/normal/nv_exchange \
	-I whale/platform/normal
endif
ifeq ($(AUDUO_PLATFORM),whale)
INCLUDE_DIRS += \
	-I whale/platform/whale/include
endif

CFLAGS = -Wall -g -O -fPIC
DEFCONFIG = \
	-DFLAG_VENDOR_ETC \
	-DAUDIOHAL_V4 \
	-DAUDIO_VBC_DEEPBUFFER_MIXER \
	-DSPRD_AUDIO_HIDL_CLIENT \
	-DSPRD_AUDIO_SMARTAMP \
	-DLOCAL_SOCKET_CLIENT \
	-DAUDIO_SERVER_64_BIT
#	-DLOCAL_SOCKET_SERVER \
#	-DAUDIO_24BIT_PLAYBACK_SUPPORT

ifeq ($(AUDUO_PLATFORM),whale)
DEFCONFIG += -DAUDIO_DSP_PLATFORM
endif
ifeq ($(AUDUO_SLIC),slic)
DEFCONFIG += -DDXS_SLIC
endif

LIBS =  \
	-lpthread -ldl -lm -lc -lutil -lstdc++ \
	-ltinyalsa \
	-ltinyxml \
	-lexpat \
	-lchm-at \
	-laudioutils \
	-ltinycompress

ifeq ($(AUDUO_PLATFORM),normal)
LIBS += -lvbeffect \
	-lvbpga \
	-lnvexchange
endif

ifeq ($(AUDUO_SLIC),slic)
LIBS += -ldxs
endif

LIBPATH = .
LIBPATH_D = -L$(LIBPATH)

TARGET = libaudiohal.so

OBJS =  \
	audio_hw.o \
	audio_monitor.o \
	audio_control.o \
	tinyalsa_util.o \
	audio_xml_utils.o \
	fm.o \
	aaudio.o \
	audio_parse.o \
	voice_call.o \
	audio_register.o \
	ring_buffer.o \
	audio_path.o \
	audio_config.o \
	audio_microphone.o \
	audio_param.o \
	param_config.o \
	aud_proc_config.o \
	aud_filter_calc.o \
	record_nr_api.o \
	audiotester_server.o \
	audio_param_handler.o \
	local_socket.o \
	endpoint_test.o \
	audio_debug.o \
	ext_control.o \
	DspCommandCtl.o \
	DspPreProcessing.o \
	compress_util.o \
	dsp_control.o \
	audio_offload.o \
	extra_func.o \
	audio_dump.o \
	alsa_pcm_util.o \
	str_parms.o \
	hashmap.o \
	strlcpy.o

ifeq ($(AUDUO_PLATFORM),normal)
OBJS +=  \
    vb_control_parameters.o \
	audio_platform.o \
	at_commands_generic.o \
	audio_atci.o \
	smart_amp.o \
	compress_simu.o \
	mp3_dec.o \
	ringbuffer.o \
	audio_pga_if.o \
	audiotester.o
endif

ifeq ($(AUDUO_PLATFORM),whale)
OBJS +=  \
	dsp_loop.o \
	vbc_pcm_dump.o \
	agdsp.o \
 	smartamp.o \
	sound_trigger_hw_new.o

OBJS +=  \
	usb.o
#	alsa_device_profile.o \
#	alsa_device_proxy.o \
#	alsa_format.o \
#	strlcat.o \
#	properties.o
endif

ifeq ($(AUDUO_SLIC),slic)
OBJS += dxs_hal.o
endif

SRCS =  \
	whale/audio_hw.c \
	whale/audio_monitor.c \
	whale/audio_control.cpp \
	whale/tinyalsa_util.cpp \
	whale/audio_xml_utils.cpp \
	whale/fm.c \
	whale/aaudio.c \
	whale/audio_parse.cpp \
	whale/voice_call.c \
	whale/audio_register.c \
	whale/ring_buffer.c \
	whale/audio_path.c \
	whale/audio_config.cpp \
	whale/audio_microphone.cpp \
	whale/audio_param/audio_param.cpp \
	whale/audio_param/param_config.cpp \
	whale/record_process/aud_proc_config.c \
	whale/record_process/aud_filter_calc.c \
	whale/record_process/record_nr_api.c \
	whale/audiotester/audiotester_server.c \
	whale/audiotester/audio_param_handler.cpp \
	whale/audiotester/local_socket.c \
	whale/debug/endpoint_test.c \
	whale/debug/audio_debug.cpp \
	whale/debug/ext_control.c \
	whale/preprocessing/DspCommandCtl.c \
	whale/preprocessing/DspPreProcessing.c \
	whale/tinycompress_util/compress_util.c \
	whale/extra_func.c \
	tool/libtinyalsa_utils/alsa_pcm_util.c \
	dump/audio_dump/audio_dump.c \
	system/core/libcutils/str_parms.cpp \
	system/core/libcutils/hashmap.cpp \
	system/core/libcutils/strlcpy.c

ifeq ($(AUDUO_PLATFORM),normal)
SRCS +=  \
	whale/platform/normal/dsp_control.c \
	whale/platform/normal/audio_offload.c \
	whale/platform/normal/vb_control_parameters.c \
	whale/platform/normal/audio_platform.cpp \
	whale/platform/normal/at_commands_generic.c \
	whale/platform/normal/audio_atci.cpp \
	whale/platform/normal/smart_amp/src/smart_amp.c \
	whale/platform/normal/compress_simu/compress_simu.c \
	whale/platform/normal/compress_simu/mp3_dec.c \
	whale/platform/normal/compress_simu/ringbuffer.c \
	whale/platform/normal/audio_pga_if.c \
	whale/platform/normal/audiotester.c
endif

ifeq ($(AUDUO_PLATFORM),whale)
SRCS +=  \
	whale/platform/whale/dsp_control.c \
	whale/platform/whale/audio_offload.c \
	whale/debug/dsp_loop.c \
	whale/debug/vbc_pcm_dump.c \
	whale/agdsp.c \
	whale/smartamp/smartamp.c \
	whale/sound_trigger_hw_new.c

SRCS +=  \
	whale/platform/whale/usb.c
#	system/media/alsa_utils/alsa_device_profile.c \
#	system/media/alsa_utils/alsa_device_proxy.c \
#	system/media/alsa_utils/alsa_format.c \
#	system/core/libcutils/strlcat.c \
#	system/core/libcutils/properties.cpp
endif

ifeq ($(AUDUO_SLIC),slic)
SRCS += whale/dxs_hal.c
endif

all: $(OBJS)
	$(CC) -shared -fPIC -o $(TARGET) $(OBJS) $(LIBPATH_D) $(LIBS)

$(OBJS):$(SRCS)
	$(CC) $(CFLAGS) ${DEFCONFIG} $(INCLUDE_DIRS) -c $^

install:
	cp $(TARGET) $(INSTALL_MOD_PATH)/usr/lib

clean:
	rm -f *.o
	rm -f oe-*
	rm -f $(TARGET)
