dora-node-api-cxx 1.0.0-rc.2

`dora` goal is to be a low latency, composable, and distributed data flow.
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE)

# Target matching check
set(DORA_BUILT_TARGET "@TARGET@")

# Normalize CMAKE_SYSTEM_PROCESSOR to match Cargo arch naming
if(CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64|amd64|x86_64")
    set(_normalized_arch "x86_64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64|arm64|aarch64")
    set(_normalized_arch "aarch64")
else()
    set(_normalized_arch "${CMAKE_SYSTEM_PROCESSOR}")
endif()

if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
    set(DORA_CURRENT_TARGET "windows-${_normalized_arch}")
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
    set(DORA_CURRENT_TARGET "macos-${_normalized_arch}")
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
    set(DORA_CURRENT_TARGET "linux-${_normalized_arch}")
else()
    message(FATAL_ERROR "@PACKAGE@: unsupported platform ${CMAKE_SYSTEM_NAME}")
endif()

message(STATUS "@PACKAGE@: built for ${DORA_BUILT_TARGET}, current is ${DORA_CURRENT_TARGET}")

if(NOT DORA_CURRENT_TARGET STREQUAL DORA_BUILT_TARGET)
    message(FATAL_ERROR "@PACKAGE@: target mismatch! built for ${DORA_BUILT_TARGET}, but current is ${DORA_CURRENT_TARGET}")
endif()

if(NOT TARGET @PACKAGE@::@PACKAGE@)
    add_library(@PACKAGE@::@PACKAGE@ STATIC IMPORTED)

    if(WIN32)
        set(_lib_name "@LIB_WIN@")
    else()
        set(_lib_name "@LIB_UNIX@")
    endif()

    set(@PACKAGE@_CXX_BRIDGE_FILES "@CXX_BRIDGE_FILES@")

    set_target_properties(@PACKAGE@::@PACKAGE@ PROPERTIES
        INTERFACE_INCLUDE_DIRECTORIES "${PACKAGE_PREFIX_DIR}/include"
        IMPORTED_LOCATION "${PACKAGE_PREFIX_DIR}/lib/${_lib_name}"
    )
endif()

# Platform-specific system libraries
if(NOT TARGET @PACKAGE@::extra)
    add_library(@PACKAGE@::extra INTERFACE IMPORTED)

    if(WIN32)
        target_link_libraries(@PACKAGE@::extra INTERFACE
            advapi32 userenv kernel32 ws2_32 bcrypt ncrypt schannel ntdll iphlpapi
            cfgmgr32 credui crypt32 cryptnet fwpuclnt gdi32 msimg32 mswsock ole32
            oleaut32 opengl32 secur32 shell32 synchronization user32 winspool)
    elseif(APPLE)
        target_link_libraries(@PACKAGE@::extra INTERFACE
            "-framework CoreServices" "-framework Security"
            pthread m c resolv)
    elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
        target_link_libraries(@PACKAGE@::extra INTERFACE
            pthread dl m rt)
    endif()
endif()