# SQLite3: use system library on Linux, vendored amalgamation on Windows cross-compile
find_package(SQLite3 QUIET)
if(NOT SQLite3_FOUND)
    # Build from amalgamation
    set(SQLITE3_AMALG_DIR ${CMAKE_SOURCE_DIR}/vendor/sqlite3)
    add_library(sqlite3_vendored STATIC ${SQLITE3_AMALG_DIR}/sqlite3.c)
    target_include_directories(sqlite3_vendored PUBLIC ${SQLITE3_AMALG_DIR})
    target_compile_definitions(sqlite3_vendored PRIVATE
        SQLITE_THREADSAFE=1
        SQLITE_ENABLE_FTS5
        SQLITE_ENABLE_JSON1
    )
    # Alias so we can use the same target name
    add_library(SQLite::SQLite3 ALIAS sqlite3_vendored)
endif()

add_imgui_app(registry_dashboard
    main.cpp
    data.cpp
    data_http.cpp
    http_client.cpp
    views.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/kpi_card.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/bar_chart.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/pie_chart.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/table_view.cpp
    ${CMAKE_SOURCE_DIR}/functions/viz/sparkline.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/dashboard_panel.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/dashboard_grid.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/fps_overlay.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/fullscreen_window.cpp
    # Design tokens + primitives (fase 1 y 2 del plan del dashboard)
    ${CMAKE_SOURCE_DIR}/functions/core/tokens.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/badge.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/empty_state.cpp
    ${CMAKE_SOURCE_DIR}/functions/core/page_header.cpp
)

target_include_directories(registry_dashboard PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}/vendor
)

target_link_libraries(registry_dashboard PRIVATE SQLite::SQLite3)

# Sockets: ws2_32 on Windows, nothing extra on Linux
if(WIN32)
    target_link_libraries(registry_dashboard PRIVATE ws2_32)
    # GUI app: sin ventana de consola al lanzar (subsystem:windows / -mwindows)
    set_target_properties(registry_dashboard PROPERTIES WIN32_EXECUTABLE TRUE)
endif()
