idf_build_get_property(target IDF_TARGET)

if(${target} STREQUAL "linux")
    set(ldfragments)
    set(srcs "src/esp_err_check_linux.c")
else()
    set(ldfragments common.lf soc.lf)
    set(srcs)
endif()

list(APPEND srcs "src/esp_err_to_name.c")

# Note: esp_ipc, esp_pm added as a public requirement to keep compatibility as to be located here.
idf_component_register(SRCS "${srcs}"
                        INCLUDE_DIRS include
                        LDFRAGMENTS ${ldfragments})

set_property(TARGET ${COMPONENT_LIB} APPEND PROPERTY LINK_INTERFACE_MULTIPLICITY 4)

# List of components needed for the error codes list
set(optional_reqs ulp
                    efuse
                    esp_http_client
                    esp_http_server
                    bootloader_support
                    nvs_flash
                    esp_wifi
                    app_update
                    lwip
                    spi_flash
                    wpa_supplicant
                    esp_serial_slave_link
                    esp_netif
                    soc
                    esp-tls
                    esp_https_ota
                    esp_hw_support)

idf_build_get_property(build_components BUILD_COMPONENTS)
foreach(req ${optional_reqs})
    if(req IN_LIST build_components)
        idf_component_get_property(req_lib ${req} COMPONENT_LIB)
        target_link_libraries(${COMPONENT_LIB} PRIVATE ${req_lib})
    endif()
endforeach()