cmake_minimum_required(VERSION 3.16)

if(ESP_PLATFORM)
    idf_component_register(
        SRCS
            "nostr_core/nostr_common.c"
            "nostr_core/nostr_log.c"
            "nostr_core/nip001.c"
            "nostr_core/nip004.c"
            "nostr_core/nip006.c"
            "nostr_core/nostr_signer.c"
            "nostr_core/nip019.c"
            "nostr_core/utils.c"
            "nostr_core/crypto/nostr_secp256k1.c"
            "nostr_core/crypto/nostr_aes.c"
            "nostr_core/crypto/nostr_chacha20.c"
            "cjson/cJSON.c"
            "platform/esp32/nostr_platform_esp32.c"
            "platform/esp32/nostr_http_esp32.c"
            "platform/esp32/nostr_websocket_esp32.c"
        INCLUDE_DIRS
            "."
            "nostr_core"
            "nostr_core/crypto"
            "cjson"
            "nostr_websocket"
        REQUIRES
            secp256k1
            esp_hw_support
            esp_http_client
            esp-tls
            tcp_transport
            mbedtls
    )

    target_compile_definitions(${COMPONENT_LIB} PRIVATE NOSTR_NO_FILESYSTEM=1)
else()
    project(nostr_core_lib C)

    add_library(nostr_core STATIC
        nostr_core/nostr_common.c
        nostr_core/nostr_log.c
        nostr_core/request_validator.c
        nostr_core/nip001.c
        nostr_core/nip006.c
        nostr_core/nip019.c
        nostr_core/nostr_signer.c
        nostr_core/nsigner_transport.c
        nostr_core/nsigner_client.c
        nostr_core/utils.c
        nostr_core/crypto/nostr_secp256k1.c
        nostr_core/crypto/nostr_aes.c
        nostr_core/crypto/nostr_chacha20.c
        cjson/cJSON.c
        platform/linux.c
    )

    target_include_directories(nostr_core PUBLIC
        .
        nostr_core
        nostr_core/crypto
        cjson
        nostr_websocket
    )
    target_compile_definitions(nostr_core PRIVATE NOSTR_ENABLE_NSIGNER_CLIENT=1)
endif()
