CXXFLAGS = -Wall -g -O
CFLAGS = -Wall -g -O
LCFLAGS = -Wall -g -O
CXXFLAGS += -DINIT_CONF_DIR=\"/etc/\"
CFLAGS += -DINIT_CONF_DIR=\"/etc/\"
SLOG_INCLUDE_DIRS = -I../modem-utils -I./ -I../ -I../atrouter/lib/iniparser/ -I../cplog_common -I storage/ -I trans/ -I control/ -I dbg_log/ -I crypto_module/crypto/inc
CPLOGCTL_INCLUDE_DIRS = -I../modem-utils -Iutility -I../atrouter/lib/iniparser/
MLSV_INCLUDE_DIRS = -I../modem-utils -I../atrouter/lib/iniparser/ -Imodem_logservice

TARGET1 = slogmodem
TARGET2 = mlogservice
TARGET3 = cplogctl
SLOG_LIBS = -lmodem_utils -lpthread -liniparser -llz4
CPLOGCTL_LIBS = -lmodem_utils -lpthread -liniparser
MLSV_LIBS = -lmodem_utils -lpthread -liniparser
LIBPATH = -L../atrouter/lib/iniparser/
#VPATH = ./utility

OBJS1 := common_utils.o \
        data_buf.o \
        fd_hdl.o \
        multiplexer.o \
        timer_mgr.o \
        thread_base.o \
        data_notifier.o \
        client_hdl.o \
        client_mgr.o \
        client_req.o \
        convey_unit.o \
        convey_unit_base.o \
        convey_workshop.o \
        copy_to_log_file.o \
        cp_convey_mgr.o \
        cp_dir.o \
        cp_dump.o \
        cp_log_cmn.o \
        cp_log.o \
        cp_set_dir.o \
        cp_stat_hdl.o \
        cp_stor.o \
        data_proc_hdl.o \
        data_process_write_thread.o \
        data_sink.o \
        dev_file_hdl.o \
        dev_file_open.o \
        diag_dev_hdl.o \
        diag_stream_parser.o \
        evt_notifier.o \
        file_sink.o \
        file_write_thread.o \
        io_chan.o \
        io_req.o \
        io_sched.o \
        log_config.o \
        log_config_with_modemtype.o \
        log_ctrl.o \
        log_file.o \
        log_pipe_dev.o \
        log_pipe_hdl.o \
        lz4_compressor.o \
        lz4_file_sink.o \
        media_stor.o \
        media_stor_check.o \
        modem_at_ctrl.o \
        modem_parse_library_save.o \
        modem_stat_hdl.o \
        engpc_notifier.o \
        parse_utils.o \
        pm_modem_dump.o \
        pm_sensorhub_log.o \
        rw_buffer.o \
        stor_mgr.o \
        trans.o \
        trans_diag.o \
        trans_disable_log.o \
        trans_enable_log.o \
        trans_global.o \
        trans_modem.o \
        trans_last_log.o \
        trans_log_convey.o \
        trans_mgr.o \
        trans_modem_ver.o \
        trans_normal_log.o \
        trans_save_evt_log.o \
        trans_save_sleep_log.o \
        trans_start_evt_log.o \
        trans_stop_cellular_log.o \
        uevent_monitor.o \
        wan_modem_log.o \
        wan_modem_time_sync.o \
        wcdma_iq_mgr.o \
        wcdma_iq_notifier.o \
        write_to_log_file.o \
        wan_modem_time_sync_refnotify.o \
        trans_modem_time.o \
        phy_log_hdl.o \
        modem_utils.o \
        dbg_buffer.o \
        buffer_mgr.o \
        dbg_file.o \
        dbg_handler.o

SRCS1 := ../cplog_common/common_utils.cpp \
        ../cplog_common/data_buf.cpp \
        ../cplog_common/data_notifier.cpp \
        ../cplog_common/fd_hdl.cpp \
        ../cplog_common/multiplexer.cpp \
        ../cplog_common/timer_mgr.cpp \
        ../cplog_common/thread_base.cpp \
        storage/*.cpp \
        control/client_hdl.cpp \
		control/client_mgr.cpp \
        control/client_req.cpp \
		cp_dump.cpp \
		cp_log_cmn.cpp \
		cp_log.cpp \
		control/cp_stat_hdl.cpp \
		data_proc_hdl.cpp \
		dev_file_hdl.cpp \
		dev_file_open.cpp \
		diag_dev_hdl.cpp \
		diag_stream_parser.cpp \
		evt_notifier.cpp \
		control/log_config.cpp \
		control/log_config_with_modemtype.cpp \
		control/log_ctrl.cpp \
		log_pipe_dev.cpp \
		log_pipe_hdl.cpp \
		media_stor.cpp \
		media_stor_check.cpp \
		modem_at_ctrl.cpp \
		modem_parse_library_save.cpp \
		control/modem_stat_hdl.cpp \
        control/engpc_notifier.cpp \
		parse_utils.cpp \
		pm_modem_dump.cpp \
		pm_sensorhub_log.cpp \
		rw_buffer.cpp \
		trans.cpp \
        trans_mgr.cpp \
		trans_global.cpp \
		trans/trans_diag.cpp \
		trans/trans_disable_log.cpp \
		trans/trans_enable_log.cpp \
		trans/trans_modem.cpp \
		trans/trans_last_log.cpp \
		trans/trans_log_convey.cpp \
		trans/trans_modem_time.cpp \
		trans/trans_modem_ver.cpp \
		trans/trans_normal_log.cpp \
		trans/trans_save_evt_log.cpp \
		trans/trans_save_sleep_log.cpp \
		trans/trans_start_evt_log.cpp \
		trans/trans_stop_cellular_log.cpp \
		wan_modem_log.cpp \
		control/wan_modem_time_sync.cpp \
		wcdma_iq_mgr.cpp \
		wcdma_iq_notifier.cpp \
		control/wan_modem_time_sync_refnotify.cpp \
        phy_log_hdl.cpp \
        modem_utils.cpp \
        dbg_log/dbg_buffer.cpp \
        dbg_log/buffer_mgr.cpp \
        dbg_log/dbg_file.cpp \
        dbg_log/dbg_handler.cpp


ifeq ($(strip $(SPRD_LOGCOLLECT_ENABLE)), true)
OBJS1 += trans_log_col.o \
         trans_modem_col.o \
         trans_pmsh_col.o \
         move_dir_to_dir.o \
         copy_dir_to_dir.o \
         trans_ext_gnss_col.o \
         trans_agdsp_col.o

SRCS1 += trans/trans_log_col.cpp \
         trans/trans_modem_col.cpp \
         trans/trans_pmsh_col.cpp \
         storage/move_dir_to_dir.cpp \
         storage/copy_dir_to_dir.cpp \
         trans/trans_ext_gnss_col.cpp \
         trans/trans_agdsp_col.cpp

CXXFLAGS +=-DSUPPORT_LOG_COLLECT
endif


ifeq ($(strip $(SPRD_GNSS_ENABLE)), true)
OBJS1 += ext_gnss_log.o \
         ext_gnss_dump.o \
         gnss_stat_hdl.o

SRCS1 += ext_gnss_log.cpp \
         ext_gnss_dump.cpp \
         control/gnss_stat_hdl.cpp

CXXFLAGS +=-DSUPPORT_GNSS
LCFLAGS += -DSUPPORT_GNSS
endif

ifeq ($(strip $(SPRD_WCN_ENABLE)), true)
OBJS1 += ext_wcn_log.o \
         ext_wcn_dump.o \
         wcnd_stat_hdl.o \
         trans_stop_wcn_log.o \
         trans_wcn_last_log.o \
         trans_ext_wcn_col.o

SRCS1 += ext_wcn_log.cpp \
         ext_wcn_dump.cpp \
         control/wcnd_stat_hdl.cpp \
         trans/trans_wcn_last_log.cpp \
         trans/trans_stop_wcn_log.cpp \
         trans/trans_ext_wcn_col.cpp

CXXFLAGS += -DSUPPORT_WCN \
            -DEXTERNAL_WCN \
            -DWCN_ASSERT_MESSAGE=\"WCN-CP2-EXCEPTION\" \
            -DWCN_STAT_SOCK_NAME=\"wcnd\"
LCFLAGS += -DSUPPORT_WCN
endif

ifeq ($(strip $(SPRD_CP_LOG_AGDSP)), -DCONFIG_AGDSP_SUPPORT)
    OBJS1 += agdsp_dump.o \
            agdsp_log.o \
            agdsp_pcm.o \
            client_hdl_agdsp.o \
		    dump_stor_notifier.o \
            log_config_agdsp.o \
            log_ctrl_agdsp.o
    SRCS1 += agdsp_dump.cpp \
            agdsp_log.cpp \
            agdsp_pcm.cpp \
            control/client_hdl_agdsp.cpp \
		    dump_stor_notifier.cpp \
            control/log_config_agdsp.cpp \
            control/log_ctrl_agdsp.cpp
    CXXFLAGS += -DSUPPORT_AGDSP
    LCFLAGS += -DSUPPORT_AGDSP
endif

ifeq ($(strip $(SPRD_CP_LOG_REMOVE_MODEM)), true)
    CXXFLAGS += -DSPRD_WIFI_ONLY
    LCFLAGS += -DSPRD_WIFI_ONLY
    CFLAGS += -DSPRD_WIFI_ONLY
endif

CXXFLAGS += -DLOG_TAG=\"SLOGCP\" -DUSE_STD_CPP_LIB_ \
            -DETB_FILE_PATH=\"/dev/tmc_etb\" \
            -DWORK_CONF_DIR=\"/mnt/data/\" \
            -D_REENTRANT
CXXFLAGS += -DPOWER_ON_PERIOD=120u
CXXFLAGS += -DMIN_INT_STOR_THRESHOLD=8u
CXXFLAGS += -DSUPPORT_RATE_STATISTIC
CXXFLAGS += -std=c++17
CXXFLAGS += $(SLOGMODEM_ORCA_5G_SET_FLAGS)

CXXFLAGS += -DUSE_SYSLOG_

CXXFLAGS += -DINT_STORAGE_PATH=\"/mnt/data\"

ifeq ($(strip $(SUPPORT_CH_FLAG)), -DCONFIG_CH_SUPPORT)
    CXXFLAGS += -DSUPPORT_INDEPENDENT_SENSORHUB
    LCFLAGS += -DSUPPORT_INDEPENDENT_SENSORHUB
    OBJS1 += sensorhub_log.o \
            trans_pmsh_dump.o

    SRCS1 += sensorhub_log.cpp \
            trans_pmsh_dump.cpp

endif

ifeq ($(strip $(SUPPORT_CRYPTOLOG_FLAG)), -DCONFIG_CRYPTOLOG_SUPPORT)
    CXXFLAGS += -DSUPPORT_CRYPTO_LOG
    SLOG_LIBS += -lcrypto-log
    SLOG_INCLUDE_DIRS += -I./crypto_module/crypto/inc -I./crypto_module/
    OBJS1 += aes_encryption_processor.o
    SRCS1 += crypto_module/aes_encryption_processor.cpp
endif

CFLAGS += -DWORK_CONF_DIR=\"/mnt/data/\"
CFLAGS += $(SLOGMODEM_ORCA_5G_SET_FLAGS)

LCFLAGS += -DLOG_TAG=\"CPLOG_CTL\" -DUSE_STD_CPP_LIB_

SRCS2 := modem_logservice/service_main.c \
		 modem_logservice/cp_logctl.c \
		 modem_logservice/config.c \
		 modem_logservice/socketutils.c \
		 modem_logservice/misc.c \
		 modem_logservice/ls_socket.c \
		 modem_logservice/proc_cmd.c

OBJS2 := service_main.o \
         cp_logctl.o \
         config.o \
         socketutils.o \
         misc.o \
         ls_socket.o \
         proc_cmd.o

SRCS3 := utility/clientreq.cpp \
		 utility/parseutils.cpp \
		 utility/clear_req.cpp \
		 utility/collect_req.cpp \
		 utility/cplogctl.cpp \
		 utility/cplogctl_cmn.cpp \
		 utility/en_evt_req.cpp \
		 utility/flush_req.cpp \
		 utility/get_cp_max_size.cpp \
		 utility/get_log_file_size.cpp \
		 utility/get_preferred_storage.cpp \
		 utility/last_log_req.cpp \
		 utility/on_off_req.cpp \
         utility/set_dbg_req.cpp \
         utility/get_dbg_req.cpp \
         utility/restore_req.cpp \
		 utility/overwrite_req.cpp \
		 utility/query_state_req.cpp \
		 utility/save_last_log_req.cpp \
		 utility/set_ag_log_dest.cpp \
		 utility/set_ag_pcm.cpp \
		 utility/set_cp_max_size.cpp \
		 utility/set_log_file_size.cpp \
		 utility/set_preferred_storage.cpp \
		 utility/slogm_req.cpp \
		 utility/start_evt_req.cpp \
         utility/set_log_buf_num.cpp \
         utility/get_log_buf_info.cpp \
         utility/mlogservice_req.cpp \
         utility/set_arm.cpp \
         utility/set_etb.cpp \
         utility/set_dsp.cpp \
         utility/set_cap.cpp \
         utility/set_arm_pcm.cpp \
         utility/set_dsp_pcm.cpp \
         utility/set_modem_loglevel_req.cpp \
         utility/reset_modem_log_settings.cpp \
         utility/set_log_dest.cpp \
         utility/get_log_dest.cpp \
         utility/get_comp.cpp \
         utility/set_comp.cpp

OBJS3 := clientreq.o \
         parseutils.o \
         clear_req.o \
         collect_req.o \
         cplogctl.o \
         cplogctl_cmn.o \
         en_evt_req.o \
         flush_req.o \
         get_cp_max_size.o \
         get_log_file_size.o \
         get_preferred_storage.o \
         last_log_req.o \
         on_off_req.o \
         set_dbg_req.o \
         get_dbg_req.o \
         restore_req.o \
         overwrite_req.o \
         query_state_req.o \
         save_last_log_req.o \
         set_ag_log_dest.o \
         set_ag_pcm.o \
         set_cp_max_size.o \
         set_log_file_size.o \
         set_preferred_storage.o \
         slogm_req.o \
         start_evt_req.o \
         set_log_buf_num.o \
         get_log_buf_info.o \
         mlogservice_req.o \
         set_arm.o \
         set_etb.o \
         set_dsp.o \
         set_cap.o \
         set_arm_pcm.o \
         set_dsp_pcm.o \
         set_modem_loglevel_req.o \
         reset_modem_log_settings.o \
         set_log_dest.o \
         get_log_dest.o \
         get_comp.o \
         set_comp.o

ifeq ($(strip $(SUPPORT_MODEM_RENAME_FLAG)), -DCONFIG_MODEM_FILES_RENAME)
    CXXFLAGS += -DSUPPORT_MODEM_RENAME \
                -DMAX_NODEL_FILE_CNT=2u
    LCFLAGS += -DSUPPORT_MODEM_RENAME
    SLOG_INCLUDE_DIRS += -I nodel/
    OBJS1 += nodel_temp_file_mgr.o \
             nodel_file_mgr.o \
             nodel_file_cnt_mgr.o \
             nodel_modem_temp_file_mgr.o \
             nodel_modem_temp_file_cnt_mgr.o

    SRCS1 += nodel/nodel_temp_file_mgr.cpp \
             nodel/nodel_file_mgr.cpp \
             nodel/nodel_file_cnt_mgr.cpp \
             nodel/nodel_modem_temp_file_mgr.cpp \
             nodel/nodel_modem_temp_file_cnt_mgr.cpp

    SRCS3 += utility/set_file_nodel.cpp \
             utility/get_file_nodel.cpp

    OBJS3 += set_file_nodel.o \
             get_file_nodel.o
endif

all:$(OBJS1) $(OBJS2) $(OBJS3)
		@echo "SRCS1: " $(SRCS1)
		@echo "SRCS2: " $(SRCS2)
		@echo "SRCS3: " $(SRCS3)
		@echo "CXXFLAGS: " $(CXXFLAGS)
		@echo "CFLAGS: " $(CFLAGS)
		@echo "LCFLAGS: " $(LCFLAGS)
		$(CXX) -o $(TARGET1) $(OBJS1) $(LIBPATH) $(SLOG_LIBS)
		$(CC) -o $(TARGET2) $(OBJS2) $(LIBPATH) $(MLSV_LIBS)
		$(CXX) -o $(TARGET3) $(OBJS3) $(LIBPATH) $(CPLOGCTL_LIBS)

$(OBJS1):$(SRCS1)
		$(CXX) $(CXXFLAGS) $(SLOG_INCLUDE_DIRS) -c $^
$(OBJS2):$(SRCS2)
		$(CC) $(CFLAGS) $(MLSV_INCLUDE_DIRS) -c $^
$(OBJS3):$(SRCS3)
		$(CXX) $(LCFLAGS) $(CPLOGCTL_INCLUDE_DIRS) -c $^

install:
		cp $(TARGET1) $(INSTALL_MOD_PATH)/usr/bin
		cp $(TARGET2) $(INSTALL_MOD_PATH)/usr/bin
		cp $(TARGET3) $(INSTALL_MOD_PATH)/usr/bin

clean:
		rm -f *.o
		rm -f $(TARGET1)
		rm -f $(TARGET2)
		rm -f $(TARGET3)
