include("${CMAKE_CURRENT_LIST_DIR}/../ESP_IDF_COMPONENT_SOURCES.cmake")

set(TRAILMATE_ESP_IDF_PLATFORM_SOURCES
    ${TRAILMATE_ESP_IDF_PLATFORM_COMMON_SOURCES})

if(TRAIL_MATE_IDF_TARGET STREQUAL "tab5")
    list(APPEND TRAILMATE_ESP_IDF_PLATFORM_SOURCES
        ${TRAILMATE_ESP_IDF_TAB5_BOARD_SOURCES})
elseif(TRAIL_MATE_IDF_TARGET STREQUAL "t_display_p4_tft" OR TRAIL_MATE_IDF_TARGET STREQUAL "t_display_p4_amoled")
    list(APPEND TRAILMATE_ESP_IDF_PLATFORM_SOURCES
        ${TRAILMATE_ESP_IDF_T_DISPLAY_P4_BOARD_SOURCES})
endif()

idf_component_register(
    SRCS
        "idf_entry.cpp"
        ${TRAILMATE_ESP_IDF_APP_SHELL_SOURCES}
        ${TRAILMATE_ESP_IDF_PRODUCT_COMPOSITION_SOURCES}
        ${TRAILMATE_ESP_IDF_CORE_HOSTLINK_SOURCES}
        ${TRAILMATE_ESP_IDF_CORE_SYS_SOURCES}
        ${TRAILMATE_ESP_IDF_CORE_DEVICE_SOURCES}
        ${TRAILMATE_ESP_IDF_CORE_GPS_SOURCES}
        ${TRAILMATE_ESP_IDF_CORE_CHAT_SOURCES}
        ${TRAILMATE_ESP_IDF_CORE_TEAM_SOURCES}
        ${TRAILMATE_ESP_IDF_CORE_MESH_SOURCES}
        ${TRAILMATE_ESP_IDF_CORE_PHONE_SOURCES}
        ${TRAILMATE_ESP_IDF_UI_SHARED_SOURCES}
        ${TRAILMATE_ESP_IDF_UI_PRESENTATION_SOURCES}
        ${TRAILMATE_ESP_IDF_UI_LVGL_UX_PACK_SOURCES}
        ${TRAILMATE_ESP_IDF_PLATFORM_SOURCES}
    INCLUDE_DIRS
        ${TRAILMATE_ESP_IDF_FINAL_INCLUDE_DIRS}
    REQUIRES
        app_update
        driver
        esp_app_format
        esp_codec_dev
        esp_lcd
        esp_lvgl_port
        esp_serial_slave_link
        esp_tinyusb
        esp_timer
        espcoredump
        fatfs
        json
        m5stack_tab5
        mbedtls
        nvs_flash
        sensor_bmi270
        t_display_p4
)

target_compile_definitions(${COMPONENT_LIB} PRIVATE
    TRAIL_MATE_LORA_TX_POWER_MAX_DBM=22
    SDFAT_FILE_TYPE=3
    USE_BLOCK_DEVICE_INTERFACE=1
    ENABLE_ARDUINO_FEATURES=0
    ENABLE_ARDUINO_SERIAL=0
    ENABLE_ARDUINO_STRING=0
    USE_FCNTL_H=1)

if(TRAIL_MATE_IDF_TARGET STREQUAL "tab5")
    target_compile_definitions(${COMPONENT_LIB} PRIVATE TRAIL_MATE_ESP_BOARD_TAB5=1)
elseif(TRAIL_MATE_IDF_TARGET STREQUAL "t_display_p4_tft")
    target_compile_definitions(${COMPONENT_LIB} PRIVATE TRAIL_MATE_ESP_BOARD_T_DISPLAY_P4=1)
elseif(TRAIL_MATE_IDF_TARGET STREQUAL "t_display_p4_amoled")
    target_compile_definitions(${COMPONENT_LIB} PRIVATE
        TRAIL_MATE_ESP_BOARD_T_DISPLAY_P4=1
        TRAIL_MATE_ESP_BOARD_T_DISPLAY_P4_AMOLED=1)
endif()

target_compile_features(${COMPONENT_LIB} PUBLIC cxx_std_17)
