cmake_minimum_required(VERSION 3.15)
project(PixyTrade VERSION 2.0 LANGUAGES CXX)

# Build as 32-bit for TradeStation compatibility
# TradeStation uses 32-bit EasyLanguage
if(MSVC)
    set(CMAKE_GENERATOR_PLATFORM Win32)
endif()

# Use C++17
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Create the DLL
add_library(PixyTrade SHARED
    PixyTrade.cpp
    PixyTrade.h
    PixyTrade.def
)

# Define export macro
target_compile_definitions(PixyTrade PRIVATE PIXYTRADE_EXPORTS)

# Link Windows HTTP library
target_link_libraries(PixyTrade PRIVATE winhttp)

# MinGW-specific settings
if(MINGW)
    # Static link runtime for easier deployment
    target_link_options(PixyTrade PRIVATE -static-libgcc -static-libstdc++)
    # Link additional Windows libraries needed by MinGW
    target_link_libraries(PixyTrade PRIVATE ws2_32)
endif()

# Set output name
set_target_properties(PixyTrade PROPERTIES
    OUTPUT_NAME "PixyTrade"
    PREFIX ""
    SUFFIX ".dll"
)

# Runtime library - use static linking for easier deployment (MSVC only)
if(MSVC)
    set_target_properties(PixyTrade PROPERTIES
        MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>"
    )
endif()

# Installation
install(TARGETS PixyTrade
    LIBRARY DESTINATION lib
    RUNTIME DESTINATION bin
)
