# SPDX-License-Identifier: MediaTekProprietary

PREFIX      = ../../install
CROSS       = arm-none-linux-
CROSS_SUP   = arm-linux- arm-none-eabi- aarch64-linux-
GCC         = $(CROSS)gcc
CC          = $(GCC)
CXX         = $(CROSS)g++
OBJDUMP     = $(CROSS)objdump
OBJCOPY     = $(CROSS)objcopy
AR          = $(CROSS)ar

ifneq ($(filter MT6735 MT6292_IA, $(strip $(PLATFORM_CHIP))),)
OFLAGS   = -O2
LOCAL_CFLAGS   = $(BB_CFLAGS_ADD) $(OFLAGS) -g -fPIC
else
OFLAGS   = -O2 -mthumb-interwork
LOCAL_CFLAGS   = $(OFLAGS) -mthumb -g -fPIC
endif
ROOT     = $(PREFIX)/$(CROSS:%-=%)

LOCAL_MODULE_ELF = tele-fwk
LOCAL_PATH   = .
MTK_SHARE_MODEM_CURRENT = 1

COMMON_CFLAGS = -Wall \
                -D_GNU_SOURCE \
                -DTAGLOG_UTILS \
                -DTAGLOG_SUPPORT \

ELF_CFLAGS_OPTION = -DTELE_FWK \
			-DTELE_DATA_ATTACH \
			-DTELE_DATA_FWK \
			-DTELE_AGPS \


ifeq ($(RAT_CONFIG_C2K_SUPPORT), yes)
    COMMON_CFLAGS += -DC2K_SUPPORT

endif
ifeq ($(MTK_MULTI_SIM_SUPPORT), dsds)
    COMMON_CFLAGS += -DANDROID_SIM_COUNT_2 \
					 -DANDROID_MULTI_SIM \
					 -DMODE_DSDS

endif

ifeq ($(MTK_MULTI_SIM_SUPPORT), dsss)
    COMMON_CFLAGS += -DANDROID_SIM_COUNT_2 \
					 -DANDROID_MULTI_SIM \
					 -DMODE_DSSS

endif

ifeq ($(MTK_HAS_HAL2MNL_EXT_SERVER), true)
    COMMON_CFLAGS += -DMTK_HAS_HAL2MNL_EXT_SERVER
endif

CFLAGS = $(LOCAL_CFLAGS) -std=c99 $(COMMON_CFLAGS) $(ELF_CFLAGS_OPTION)
CXXFLAGS = $(LOCAL_CFLAGS) -std=gnu++14 $(COMMON_CFLAGS) $(ELF_CFLAGS_OPTION)

LOCAL_C_INCLUDES = -I$(ROOT)/usr/include/binder \
                   -I$(ROOT)/usr/include/utils \
                   -I$(ROOT)/usr/include/glib-2.0 \
                   -I$(ROOT)/usr/include/gio-unix-2.0 \
                   -I$(ROOT)$(libdir)/glib-2.0/include \
                   -I$(ROOT)/usr/include/private \
		   -I$(LOCAL_PATH)/../ \
                   -I$(LOCAL_PATH)/../include \
                   -I$(LOCAL_PATH)/../include/telephony \
		   -I$(LOCAL_PATH)/../mtk-rilproxy \
                   -I$(LOCAL_PATH)/../mtk-rilproxy/framework/base \
                   -I$(LOCAL_PATH)/../mtk-rilproxy/framework/include \
                   -I$(LOCAL_PATH)/../mtk-rilproxy/framework/include/base \
                   -I$(LOCAL_PATH)/../mtk-rilproxy/framework/include/core \
                   -I$(LOCAL_PATH)/../mtk-rilproxy/telephony \
                   -I$(LOCAL_PATH)/../mtk-rilproxy/telephony/nw \
                   -I$(LOCAL_PATH)/../mtk-rilproxy/telephony/client \
	           -I$(LOCAL_PATH)/../mtk-rilproxy/telephony/apn \
                   -I$(LOCAL_PATH)/../mtk-rilproxy/telephony/sdk \
                   -I$(LOCAL_PATH)/../mtk-rilproxy/telephony/suplmessageparser \
                   -I$(LOCAL_PATH)/../mtk-rilproxy/telephony/data \
                   -I$(LOCAL_PATH)/../mtk-rilproxy/telephony/agpsadapter \
                   -I$(LOCAL_PATH)/

LOCAL_SRC_FILES_C = \
    ../mtk-rilproxy/ril_callbacks.c \
    ../mtk-rilproxy/atchannel.c \
    ../mtk-rilproxy/misc.c \
    ../mtk-rilproxy/at_tok.c \
    ../mtk-rilproxy/telephony/sdk/Rfx_data_service.c \
    ../mtk-rilproxy/telephony/agpsadapter/protocol/Agps2FrameworkInterface.c \
    ../mtk-rilproxy/telephony/agpsadapter/protocol/Framework2AgpsInterface.c \
    ../mtk-rilproxy/telephony/agpsadapter/protocol/mtk_socket_data_coder.c \
    ../mtk-rilproxy/telephony/agpsadapter/protocol/mtk_socket_utils.c


LOCAL_SRC_FILES_CPP = \
    ../mtk-rilproxy/socket_channel.cpp \
    ../mtk-rilproxy/socket_util.cpp \
    ../mtk-rilproxy/framework/base/RfxVariant.cpp \
    ../mtk-rilproxy/framework/base/RfxMessage.cpp \
    ../mtk-rilproxy/framework/base/RfxSocketState.cpp \
    ../mtk-rilproxy/framework/core/Rfx.cpp \
    ../mtk-rilproxy/framework/core/RfxObject.cpp \
    ../mtk-rilproxy/framework/core/RfxClassInfo.cpp \
    ../mtk-rilproxy/framework/core/RfxAction.cpp \
    ../mtk-rilproxy/framework/core/RfxAsyncSignal.cpp \
    ../mtk-rilproxy/framework/core/RfxSignal.cpp \
    ../mtk-rilproxy/framework/core/RfxTimer.cpp \
    ../mtk-rilproxy/framework/core/RfxMainThread.cpp \
    ../mtk-rilproxy/framework/core/RfxController.cpp \
    ../mtk-rilproxy/framework/core/RfxRootController.cpp \
    ../mtk-rilproxy/framework/core/RfxSlotRootController.cpp \
    ../mtk-rilproxy/framework/core/RfxControllerFactory.cpp \
    ../mtk-rilproxy/framework/core/RfxStatusManager.cpp \
    ../mtk-rilproxy/framework/core/RfxRilAdapter.cpp \
    ../mtk-rilproxy/framework/core/RfxDispatchThread.cpp \
    ../mtk-rilproxy/framework/core/RfxSocketStateManager.cpp \
    ../mtk-rilproxy/framework/base/RfxDebugInfo.cpp \
    ../mtk-rilproxy/framework/base/RfxDefaultDestUtils.cpp \
    ../mtk-rilproxy/framework/base/RfxCallState.cpp \
    ../mtk-rilproxy/framework/base/RfxNwServiceState.cpp \
    ../mtk-rilproxy/framework/core/RfxTestBasicController.cpp \
    ../mtk-rilproxy/framework/core/RfxTestSuitController.cpp \
    ../mtk-rilproxy/framework/base/RfxTransferUtils.cpp \
    ../mtk-rilproxy/framework/base/RfxParcelTransfer.cpp \
    ../mtk-rilproxy/framework/base/RfxParcelTransferUtils.cpp \
    ../mtk-rilproxy/telephony/client/RilClient.cpp \
    ../mtk-rilproxy/telephony/client/RilDefaultClient.cpp \
    ../mtk-rilproxy/telephony/client/RilClientQueue.cpp \
    ../mtk-rilproxy/telephony/client/RpRilClientController.cpp \
    ../mtk-rilproxy/telephony/sdk/RilSdkClient.cpp \
    ../mtk-rilproxy/telephony/sdk/Wrapper.cpp \
    ../mtk-rilproxy/telephony/nw/RpNwStateController.cpp \
    ../mtk-rilproxy/telephony/nw/RpNwPhoneTypeUpdater.cpp \
    ../mtk-rilproxy/telephony/power/RpRadioController.cpp \
    ../mtk-rilproxy/telephony/power/RadioMessage.cpp \
    ../mtk-rilproxy/telephony/call/RpCallController.cpp \
    ../mtk-rilproxy/telephony/ss/RpSsController.cpp \
    ../mtk-rilproxy/telephony/sim/RpSimController.cpp \
    ../mtk-rilproxy/telephony/sim/RpSimControllerBase.cpp \
    ../mtk-rilproxy/telephony/sim/RpGsmSimController.cpp \
    ../mtk-rilproxy/telephony/sim/RpC2kSimController.cpp \
    ../mtk-rilproxy/telephony/apn/RpApnController.cpp \
    ../mtk-rilproxy/telephony/data/RpDataController.cpp \
    ../mtk-rilproxy/telephony/data/RpDataUtils.cpp \
    ../mtk-rilproxy/telephony/data/ApnContext.cpp\
    ../mtk-rilproxy/telephony/data/ApnSetting.cpp\
    ../mtk-rilproxy/telephony/data/RetryManager.cpp\
    ../mtk-rilproxy/telephony/data/Common.cpp\
    ../mtk-rilproxy/telephony/data/NetworkConfig.cpp\
    ../mtk-rilproxy/telephony/data/DcTracker.cpp\
    ../mtk-rilproxy/telephony/data/DcFail.cpp\
    ../mtk-rilproxy/telephony/data/DcController.cpp\
    ../mtk-rilproxy/telephony/data/DataConnection.cpp\
    ../mtk-rilproxy/telephony/data/PdnManager.cpp\
    ../mtk-rilproxy/telephony/data/DataCallResponse.cpp\
    ../mtk-rilproxy/telephony/agpsadapter/RpAgpsNwAdapter.cpp \
    ../mtk-rilproxy/telephony/agpsadapter/RpRilAgpsNwClient.cpp \
    ../mtk-rilproxy/telephony/suplmessageparser/ConcentratedSms.cpp \
    ../mtk-rilproxy/telephony/suplmessageparser/GsmSmsAddress.cpp \
    ../mtk-rilproxy/telephony/suplmessageparser/PduParser.cpp \
    ../mtk-rilproxy/telephony/suplmessageparser/SmsAddress.cpp \
    ../mtk-rilproxy/telephony/suplmessageparser/SmsHeader.cpp \
    ../mtk-rilproxy/telephony/suplmessageparser/SmsMessage.cpp \
    ../mtk-rilproxy/telephony/suplmessageparser/SmsParserUtils.cpp \
    ../mtk-rilproxy/telephony/suplmessageparser/SuplMsgDispatcher.cpp \
    ../mtk-rilproxy/telephony/suplmessageparser/LogUtils.cpp 

LOCAL_ELF_SRC_FILES_C = $(LOCAL_SRC_FILES_C)
LOCAL_ELF_SRC_FILES_C += \
	main.c \


LOCAL_ELF_SRC_FILES_CPP =
LOCAL_ELF_SRC_FILES_CPP += $(LOCAL_SRC_FILES_CPP)

LOCAL_OBJ_FILES = $(LOCAL_SRC_FILES_C:.c=.o) $(LOCAL_SRC_FILES_CPP:.cpp=.o)
LOCAL_ELF_OBJ_FILES = $(LOCAL_ELF_SRC_FILES_C:.c=.o) $(LOCAL_ELF_SRC_FILES_CPP:.cpp=.o)

LOCAL_LIBS := -lcutils -lutils -ldl -llog -lbinder -lpthread -luciwrapper -lrt -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lapn \
                 -L../librilproxyutils -lrilproxyutils_static  -lpal -lc_dns -L./

LDFLAGS += $(LOCAL_LIBS) \
           $(OFLAGS)

.PHONY: build clean install pack_rootfs

all: build

$(LOCAL_MODULE_ELF).elf: $(LOCAL_ELF_OBJ_FILES)
	$(warning ########## build $(LOCAL_MODULE_ELF).elf ##########)
	@rm -f $@
	$(CXX) -Wl,--no-undefined $(LOCAL_LIBS) -o _$@ $^ $(LDFLAGS)
	@mv _$@ $@


%.o: %.c
	$(warning ----->build $<)
	$(CC) $(CFLAGS) $(LOCAL_C_INCLUDES) $(CONFIG) -o $@ -c $<

%.o: %.cpp
	$(warning ----->build $<)
	$(CXX) $(CXXFLAGS) $(LOCAL_C_INCLUDES) $(CONFIG) -o $@ -c $<

build:  $(LOCAL_MODULE_ELF).elf
	$(warning ########## build $(LOCAL_MODULE_ELF) elf ##########)

clean:
	$(warning ########## clean $(LOCAL_MODULE_ELF) ##########)
	-find . -name "*.o" -delete
	-rm $(LOCAL_MODULE_ELF).elf

install:
	$(warning ########## install $(LOCAL_MODULE_ELF) ##########)
	mkdir -p $(ROOT)/$(base_bindir)/
	install $(LOCAL_MODULE_ELF).elf $(ROOT)/$(base_bindir)/	

pack_rootfs:

	mkdir -p $(PACK_INITRAMFS_TO)$(base_bindir)/
	cp -af $(LOCAL_MODULE_ELF).elf $(PACK_INITRAMFS_TO)$(base_bindir)/
	$(CROSS)strip $(PACK_INITRAMFS_TO)$(base_bindir)/$(LOCAL_MODULE_ELF).elf
	mkdir -p $(PACK_TO)$(base_bindir)/
	cp -af $(LOCAL_MODULE_ELF).elf $(PACK_TO)$(base_bindir)/
	$(CROSS)strip $(PACK_TO)$(base_bindir)/$(LOCAL_MODULE_ELF).elf
