
AVAILABLE_TARGETS = ec7xx_ref_1h00
TOOLCHAIN         = GCC
BINNAME           = ap_$(PROJECT)
TOP              := ../../../../../../..

CFLAGS += -DBSP_MINIDKB_1V1=1
CFLAGS += -DFPM_DEFAULT
# CFLAGS += -DFEATURE_LCD_TEST_RGB
# CFLAGS += -DEPAT_HAL_DEBUG
SUBSYS_TCRTC_ENABLE              = y
# y: 从 <repo>/src/ 源码编译 libtc_iot_sdk.a; 否则链接 subsys/tcrtc/lib/ 预编译库
TCRTC_BUILD_FROM_SOURCE         = n
# 是否支持用户界面
USER_INTERFACE_ENABLE           = y

ifeq ($(SUBSYS_TCRTC_ENABLE),y)
# 通过配置该项目来选择是否支持视频通话功能
SUBSYS_TGAI_VIDEO_ENABLE        = n
ifeq ($(SUBSYS_TGAI_VIDEO_ENABLE),y)
SUBSYS_CAMERA_ENABLE            = y
SUBSYS_COMMON_ENABLE = y
CFLAGS += -DFEATURE_TCRTC_VIDEO_ENABLE
endif
endif
ifeq ($(SUBSYS_TCRTC_AT_ENABLE),y)
CFLAGS += -DFEATURE_SUBSYS_TCRTC_AT_ENABLE
endif

ifeq ($(USER_INTERFACE_ENABLE),y)
BUILD_HAL_SCREEN        = y
SUBSYS_GUI_ENABLE               = y
SUBSYS_GUI_LVGL_ENABLE          = y
SUBSYS_GRAPHIC_ENABLE           = y
SUBSYS_MODE_ENABLE              = y
SUBSYS_CONSOLE_ENABLE           = y
SUBSYS_POWER_MANAGER_ENABLE     = n
CFLAGS += -DLV_TICK_CUSTOM
else
BUILD_HAL_SCREEN        = n
SUBSYS_GUI_ENABLE               = n
SUBSYS_GUI_LVGL_ENABLE          = n
SUBSYS_GRAPHIC_ENABLE           = n
SUBSYS_MODE_ENABLE              = y
SUBSYS_CONSOLE_ENABLE           = y
SUBSYS_POWER_MANAGER_ENABLE     = n
endif

ifeq ($(BUILD_HAL_SCREEN),y)
CFLAGS += -DFEATURE_HAL_SCREEN_ENABLE
CFLAGS += -DSPI_1_DATA_LANE=1
CFLAGS += -DHAL_LCD_ST7789_ENABLE
CFLAGS += -DHAL_TP_FT6336_ENABLE
CFLAGS += -DLCD_HEIGHT=320
CFLAGS += -DLCD_WIDTH=240
DRIVER_TP_FT6336_ENABLE = y
BUILTIN_SCR_ST7789      = y
endif

SUBSYS_STORAGE_TEST_ENABLE      = n
SUBSYS_JSONDB_TEST_ENABLE       = n
SUBSYS_SOCKET_TEST_ENABLE       = n
SUBSYS_HTTP_TEST_ENABLE         = n
SUBSYS_MOBILE_TEST_ENABLE       = n
SUBSYS_AUDIO_TEST_ENABLE        = n
SUBSYS_SYSTIME_TEST_ENABLE      = n
SUBSYS_GPIO_TEST_ENABLE         = n
SUBSYS_SYSLOG_TEST_ENABLE       = n
SUBSYS_GNSS_TEST_ENABLE         = n
SUBSYS_SENSORHUB_TEST_ENABLE    = n
SUBSYS_RIL_TEST_ENABLE          = y
SUBSYS_REG_TEST_ENABLE          = y
SUBSYS_SYSINFO_ENABLE           = y
FLOAT_FLAG_ENABLE               = n
GCC_OPTIMIZE_OPTIONS_O3         = y

SUBSYS_ENABLE                   = y
SUBSYS_MISC_ENABLE              = y
SUBSYS_TELECOM_ENABLE           = y
LIB_MM_JPEG_USED                = y
SUBSYS_SYSLOG_ENABLE            = y
SUBSYS_SYSTIME_ENABLE           = y
SUBSYS_STORAGE_ENABLE           = y
SUBSYS_FLASHEX_ENABLE           = y
SUBSYS_LFSEX_ENABLE             = y
ifeq ($(SUBSYS_FLASHEX_ENABLE)_$(LFS_EX_DEPEND),y_true)
CFLAGS += -DFLASH_X_ENABLE
endif
SUBSYS_STATUS_ENABLE            = y
SUBSYS_APPHUB_ENABLE            = y
ifeq ($(SUBSYS_APPHUB_ENABLE),y)
THIRDPARTY_CJSON_ENABLE = y
endif
SUBSYS_OPENHAL_ENABLE           = y
ifeq ($(SUBSYS_CONSOLE_ENABLE),y)
SUBSYS_UARTSERVICE_ENABLE       = y
SUBSYS_FINSH_ENABLE             = y
SUBSYS_PYTHON_ENABLE            = n
endif
SUBSYS_OPENPLAYER_ENABLE		= y
SUBSYS_ELOG_ENABLE              = y
SUBSYS_MEDIA_ENABLE             = y
ifeq ($(SUBSYS_MEDIA_ENABLE),y)
SUBSYS_AUDIO_DEMO_ENABLE        = y
SUBSYS_AUDIO_ENABLE             = y
SUBSYS_TTS_ENABLE               = n
SUBSYS_CODEC_ENABLE             = y
SUBSYS_MP3_ENABLE               = n
SUBSYS_AMR_ENABLE               = y
SUBSYS_WAV_ENABLE               = y
SUBSYS_PCM_ENABLE               = y
SUBSYS_AMR_RECORD_ENABLE        = y
SUBSYS_MED_PCM_ENABLE           = y
SUBSYS_OPENRECORD_ENABLE        = y
SUBSYS_COMM_ENABLE				= y
SUBSYS_COMMON_ENABLE            = y
SUBSYS_VOLUME_MANAGER_ENABLE    = y
SUBSYS_COMM_HTTP_DOWNLOADER_ENABLE = y
ifeq ($(SUBSYS_COMM_ENABLE),y)
SUBSYS_COMM_HTTPC_ENABLE		= y
endif
SUBSYS_MEDIA_STREAM_ENABLE      = y
SUBSYS_G711_ENABLE              = y
endif
THIRDPARTY_OPUS_ENABLE = y
ifeq ($(SUBSYS_GRAPHIC_ENABLE),y)
SUBSYS_GRAPHIC_OPENIMAGE_ENABLE = y
SUBSYS_GRAPHIC_ARM2D_ENABLE     = n
endif
SUBSYS_DISPLAY_ENABLE           = n
SUBSYS_GUI_LVGL9_ENABLE         = n
# CFLAGS += -DONLY_TEST_LV_SIZE=1
# CFLAGS += -DLV_USE_DEMO_BENCHMARK=1
CFLAGS += -DLV_USE_DEMO_WIDGETS=1
# CFLAGS += -DLV_USE_DEMO_MUSIC=1
#CFLAGS += -DLV_USE_SYSMON=1
#CFLAGS += -DLV_USE_PERF_MONITOR=1
# CFLAGS += -DLV_USE_MEM_MONITOR=1


ifeq ($(DRIVER_TP_FT6336_ENABLE),y)
CFLAGS += -DFEATURE_TP_FT6336_ENABLE
DRIVER_TP_ENABLE                = y
endif
ifeq ($(DRIVER_TP_ENABLE),y)
CFLAGS += -DFEATURE_DRIVER_TP_ENABLE
endif
SUBSYS_ZIP_ENABLE               = y
ifeq ($(SUBSYS_CAMERA_ENABLE),y)
SUBSYS_OPENHAL_CAMERA_ENABLE    = y
DRIVER_CAMERA_ENABLE            = y
BUILTIN_CAM_GC032A = y
BUILTIN_CAM_BF20A6 = y
BUILTIN_CAM_BF30A2 = y
BUILTIN_CAM_GC6133 = y
BUILTIN_CAM_GC6153 = y
LIB_MM_JPEG_USED                = y
endif
DRIVER_ADC_ENABLE               = y
ifeq ($(DRIVER_ADC_ENABLE),y)
CFLAGS += -DFEATURE_DRIVER_ADC_ENABLE
endif

ifeq ($(EUTRAN_MODE), cat_mode)
EUTRAN_CAT_MODE     = y
endif

#if need usb auto adapt support, set to y
#USBNET_AUTO_ADAPT_ENABLE=y

#enable below setting if OPENCPU_MODE is needed
ifeq ($(OPENCPU), true)
OPENCPU_MODE_ENABLE = y
endif

ifeq ($(GCF_ENABLE), true)
GCF_FEATURE_ENABLE = y
endif

ifeq ($(MID_ENABLE), true)
MID_FEATURE_ENABLE = y
endif

ifeq ($(IOTAT_ENABLE), true)
IOTAT_FEATURE_ENABLE = y
endif

ifeq ($(GLO_ENABLE), true)
GLO_CALI_MODE_ENABLE = y
endif

ifeq ($(IMS_ENABLE), true)
IMS_MODE_ENABLE = y
endif

ifeq ($(IMS_SMSONLY_ENABLE), true)
IMS_SMSONLY_MODE_ENABLE = y
endif

ifeq ($(AUDIO_ENABLE), true)
AUDIO_MODE_ENABLE = y
endif

ifeq ($(AUDIO_FIX_ENABLE), true)
AUDIO_FIX_SRC_ENABLE = y
endif

ifeq ($(TYPE), ec716s)
ifeq ($(RAM_ENBALE), true)
MORE_RAM_ENABLE = y
endif
endif

ifeq ($(TYPE), ec718p)
#AT+ECDIEXY
BUILD_PLAT_PROD_ECDIEXY_ENABLE     = y
endif

ifeq ($(ROM_ENABLE), true)
MORE_ROM_ENABLE = y
endif

ifeq ($(REF_MODE), ref_cr)
REF_CR_ENABLE = y
endif

ifeq ($(LESS_LOG), true)
LESS_LOG_ENABLE = y
endif

ifneq ($(filter ec718%m, $(TYPE)),)
EC718XM_LD_AND_PREC = y
EC718XM_VPU_ENHANCE = y
endif

#features will be customized to whatever customers want!
include $(TOP)/PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/GCC/FeatCustom_$(TYPE).inc

ifeq ($(EXCEPTION_FLASH_DUMP_ENABLE), y)
CFLAGS_DEFS += -DFEATURE_EXCEPTION_FLASH_DUMP_ENABLE
endif

ifeq ($(MIDDLEWARE_AMR_ENABLE), y)
CFLAGS_DEFS += -DFEATURE_AMR_CP_ENABLE
endif

ifeq ($(MIDDLEWARE_VEM_ENABLE), y)
CFLAGS_DEFS += -DFEATURE_VEM_CP_ENABLE
endif


ifeq ($(IMS_ENABLE), true)
CFLAGS_DEFS += -DFEATURE_IMS_ENABLE
CFLAGS_DEFS += -DFEATURE_IMS_CC_ENABLE
CFLAGS_DEFS += -DFEATURE_IMS_SMS_ENABLE
ifneq ($(findstring $(TYPE), ec718p ec718u),)
CFLAGS_DEFS += -DFEATURE_IMS_USE_PSRAM_ENABLE
endif
CFLAGS_DEFS += -DFEATURE_IMS_EMC_ENABLE
CFLAGS_DEFS += -DFEATURE_IMS_UT_ENABLE
CFLAGS_DEFS += -fno-strict-aliasing
endif

ifeq ($(IMS_SMSONLY_ENABLE), true)
CFLAGS_DEFS += -DFEATURE_IMS_ENABLE
CFLAGS_DEFS += -DFEATURE_IMS_SMS_ENABLE
CFLAGS_DEFS += -fno-strict-aliasing
#        NO FEATURE_IMS_CC_ENABLE
endif

ifeq ($(AUDIO_ENABLE), true)
ifeq ($(BUILD_SUPPORT_APP_PCM_MEM_POOL), y)
CFLAGS_DEFS += -DFEATURE_SUPPORT_APP_PCM_MEM_POOL
endif
CFLAGS_DEFS += -DFEATURE_AUDIO_ENABLE
endif

ifneq ($(findstring $(TYPE), ec716s ec716e),)
ifeq ($(RAM_ENBALE), true)
CFLAGS_DEFS += -DFEATURE_MORERAM_ENABLE
endif
endif

ifeq ($(ROM_ENABLE), true)
CFLAGS_DEFS += -DFEATURE_MOREROM_ENABLE
endif

ifeq ($(LESS_LOG_ENABLE), y)
CFLAGS_DEFS += -DFEATURE_LESSLOG_ENABLE
endif

ifeq ($(REF_CR_ENABLE), y)
CFLAGS_DEFS += -DFEATURE_REF_CR_ENABLE
endif

ifeq ($(BUILD_PER_PLMN_ENABLE), y)
CFLAGS_DEFS += -DFEATURE_PER_PLMN_ENABLE
endif

ifeq ($(THIRDPARTY_CMCC_DM_ENABLE), y)
THIRDPARTY_CJSON_ENABLE        = y
THIRDPARTY_CISONENET_ENABLE    = y
THIRDPARTY_ERCOAP_ENABLE       = y
endif

ifeq ($(BUILD_PLAT_ONENET_AT_ENABLE), y)
THIRDPARTY_ERCOAP_ENABLE      = y
THIRDPARTY_CISONENET_ENABLE    = y
endif

#ensure AT command to be consistent with protocol
#such as mqtt/...
ifeq ($(THIRDPARTY_MQTT_ENABLE), n)
BUILD_PLAT_MQTT_AT_ENABLE      = n
endif

ifeq ($(THIRDPARTY_HTTPC_ENABLE), n)
BUILD_PLAT_HTTP_AT_ENABLE      = n
endif

ifeq ($(THIRDPARTY_MBEDTLS_ENABLE), n)
BUILD_PLAT_SSL_AT_ENABLE      = n
endif

ifeq ($(MIDDLEWARE_FOTAPAR_ENABLE), n)
BUILD_PLAT_FOTA_AT_ENABLE     = n
BUILD_PLAT_ECOTA_AT_ENABLE    = n
endif
CFLAGS += -DLV_TICK_CUSTOM

CFLAGS_INC        += -I ../inc                   \
                     -I $(TOP)/FIRMWARE/SRC/CAT1/Common/Inc \
                     -I ../gui \
                     -I ../gui/components \
                     -I ../gui/screens \
                     -I ../res

obj-y           += PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/src/main.o          \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/src/main_app.o      \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/src/input_proc.o    \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/src/rawData.o       \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/src/dev_cfg.o       \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/src/bsp_custom.o     \
# 根据USER_INTERFACE_ENABLE条件包含GUI相关文件
ifeq ($(USER_INTERFACE_ENABLE),y)
obj-y           += PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/src/main_lcd.o      \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/components/ui_comp_small_label.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/components/ui_comp.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/components/ui_comp_scrolldots.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/components/ui_comp_alarm_comp.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/components/ui_comp_clock_dot.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/components/ui_comp_hook.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/fonts/ui_font_Number.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/fonts/ui_font_chfont.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/images/ui_img_avatar_png.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/images/ui_img_chip_png.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/images/ui_img_pattern_png.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/images/ui_img_phone_png.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/images/ui_img_clock_hour_png.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/images/ui_img_clock_min_png.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/images/ui_img_clock_sec_png.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/images/ui_img_chatbox_png.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/images/ui_img_chatbox2_png.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/screens/ui_Chat.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/screens/ui_Call.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/screens/ui_Clock.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/screens/ui_Main.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/ui_helpers.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/gui/ui.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/src/app_tcrtc_gui.o \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/res/ring_income_pcm.o     \
                   PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/res/ring_wait_pcm.o     
else
obj-y           += PLAT/project/$(TARGET)/$(CORE)/apps/$(PROJECT)/src/audio_res.o
endif

#CONFIG_PROJ_APP_SECURITY_BOOT  = y

include $(TOP)/PLAT/tools/scripts/Makefile.rules

#configure USBNET_AUTO_ADAPT_ENABLE in ".\device\target\board\%BOARD_NAME%\ap\%BOARD_NAME%_ap.mk"'
ifeq ($(USBNET_AUTO_ADAPT_ENABLE), y)
CFLAGS_DEFS += -DFEATURE_USBNET_ATA_FOR_AP
CFLAGS_DEFS += -DFEATURE_FIX_REMOTE_WKUP_UNPAIRED_CASE
endif


#enable wdt
CFLAGS += -DWDT_FEATURE_ENABLE=1
CFLAGS += -DFEATURE_UART_HELP_DUMP_ENABLE

#Enable SIM hotswap feature with pad configration and jitter handle by required----don't remove it
#CFLAGS += -DSIM_HOT_SWAP_FEATURE


#Make all warnings into errors
# CFLAGS += -Werror


ifneq ($(OPENCPU_MODE_ENABLE),y)
ifneq ($(BUILD_AT),y)
$(error This example needs to modify "BUILD_AT" to "y" in device\target\board\$(TARGET)\$(CORE)\$(TARGET)_$(CORE).mk)
endif
endif