idf_component_register(
    SRCS
        "main.c"
        "console_completion.c"
        "console_input.c"
        "network_console.c"
        "system_console.c"
        "secure_random.c"
        "status_led.c"
        "local_display.c"
        "local_boot_animation.c"
        "local_status_ui.c"
        "local_ui_config.c"
        "local_ui_console.c"
        "local_ui_hw_test.c"
        "rs232_hw_test.c"
        "rs232_port_owner.c"
        "serial_config.c"
        "serial_service.c"
        "serial_console.c"
        "session_broker.c"
        "session_console.c"
        "ssh_security.c"
        "admin_command_gate.c"
        "admin_ssh_console.c"
        "ssh_transport.c"
        "ssh_console.c"
        "usb_cdc_transport.c"
        "usb_console.c"
        "user_database.c"
        "user_console.c"
        "web_security.c"
        "web_serial_transport.c"
        "web_serial_settings.c"
        "web_account_settings.c"
        "web_admin_tickets.c"
        "web_admin_transport.c"
        "web_assets_data.c"
        "web_ui.c"
        "web_server.c"
        "web_diagnostics.c"
        "web_session_store.c"
        "web_auth_parse.c"
        "web_httpd_adapter.c"
        "web_httpd_idle.c"
        "web_cookie_auth.c"
        "web_login_ui.c"
        "web_console.c"
        "wifi_config.c"
        "wifi_manager.c"
        "wifi_console.c"
        "mdns_config.c"
        "mdns_service.c"
        "mdns_console.c"
    INCLUDE_DIRS "."
    REQUIRES
        bootloader_support
        console
        esp_driver_gpio
        esp_driver_i2c
        esp_driver_uart
        esp_event
        esp_http_server
        esp_https_server
        esp_netif
        esp_psram
        esp_system
        esp_timer
        esp_tinyusb
        esp_wifi
        freertos
        led_strip
        lwip
        mbedtls
        mdns
        nvs_flash
        wolfssl__wolfssh
        wolfssl__wolfssl
)

# Only web_httpd_adapter.c uses this private, version-checked boundary.
target_include_directories(${COMPONENT_LIB} PRIVATE
    "$ENV{IDF_PATH}/components/esp_http_server/src"
    "$ENV{IDF_PATH}/components/esp_http_server/src/port/esp32")

# HTTPD debug logs include header values; URI warnings include ticket queries.
# Compile those out, independently of runtime log-level changes.
idf_component_get_property(httpd_lib esp_http_server COMPONENT_LIB)
target_compile_definitions(${httpd_lib} PRIVATE LOG_LOCAL_LEVEL=ESP_LOG_ERROR)

# Public wolfSSH headers include wolfCrypt configuration from user_settings.h.
target_compile_definitions(${COMPONENT_LIB} PRIVATE
    WOLFSSL_USER_SETTINGS
    WOLFSSH_USER_SETTINGS
    WC_RNG_SEED_CB
)
