cmake_minimum_required(VERSION 3.25)

project(xray-serialization VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

# Setup for shared library creation
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
if(WIN32)
    set(CMAKE_SHARED_LIBRARY_PREFIX "")
endif()

find_package(Qt6 REQUIRED COMPONENTS Core Core5Compat)

set(SOURCES
    serialization.h
    transfer.h
    inbound.cpp
    outbound.cpp
    ss.cpp
    ssd.cpp
    trojan.cpp
    vless.cpp
    vmess.cpp
    vmess_new.cpp
    utilities.cpp
)

add_library(${PROJECT_NAME} SHARED ${SOURCES})

target_include_directories(${PROJECT_NAME} 
    PUBLIC 
        ${CMAKE_CURRENT_SOURCE_DIR}
        ${CMAKE_CURRENT_SOURCE_DIR}/3rd/QJsonStruct
)

target_link_libraries(${PROJECT_NAME} 
    PRIVATE 
        Qt6::Core
        Qt6::Core5Compat
)