# Build the native Sinsera crypto library

cmake_minimum_required(VERSION 3.15)

# Project configuration
project(sinsera_crypto_library VERSION 1.0.0 LANGUAGES CXX C)

# Set C++ standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Add the library
add_library(sinsera_crypto SHARED
    sinsera_crypto.cpp
)

# Include directories
target_include_directories(sinsera_crypto PRIVATE .)

# Compiler-specific options
if(WIN32)
    target_compile_definitions(sinsera_crypto PRIVATE
        WIN32_LEAN_AND_MEAN
        NOMINMAX
    )
endif()

# Set target properties
set_target_properties(sinsera_crypto PROPERTIES
    PUBLIC_HEADER sinsera_crypto.h
    OUTPUT_NAME "sinsera_crypto"
    SOVERSION 1
    VERSION 1.0.0
)

# Platform-specific settings
if(APPLE)
    set_target_properties(sinsera_crypto PROPERTIES
        INSTALL_NAME_DIR "@rpath"
        MACOSX_RPATH TRUE
    )
elseif(WIN32)
    set_target_properties(sinsera_crypto PROPERTIES
        WINDOWS_EXPORT_ALL_SYMBOLS TRUE
    )
endif()

# Install the library
install(TARGETS sinsera_crypto
    LIBRARY DESTINATION lib
    ARCHIVE DESTINATION lib
    RUNTIME DESTINATION bin
    PUBLIC_HEADER DESTINATION include
)
