cmake_minimum_required(VERSION 3.16)
project(starbonding-windows-gui LANGUAGES C CXX)

if(NOT WIN32)
    message(FATAL_ERROR "The StarBonding GUI is a Windows application.")
endif()

add_executable(starbonding WIN32
    apps/starbonding_windows_gui.c
    platform/windows_gui_backend.c
    platform/windows_diagnostics.c
    platform/windows_web_services.cpp
    packaging/windows/starbonding_resources.rc
)

target_compile_features(starbonding PRIVATE cxx_std_17)
target_compile_definitions(starbonding PRIVATE
    WIN32_LEAN_AND_MEAN
    _CRT_SECURE_NO_WARNINGS
)
if(MSVC)
    target_compile_options(starbonding PRIVATE /W4)
endif()
target_link_libraries(starbonding PRIVATE
    advapi32
    bcrypt
    cfgmgr32
    comctl32
    credui
    gdiplus
    iphlpapi
    ole32
    setupapi
    shell32
    winhttp
    wintrust
    ws2_32
)

add_custom_command(TARGET starbonding POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E make_directory
        "$<TARGET_FILE_DIR:starbonding>/assets"
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
        "${CMAKE_CURRENT_SOURCE_DIR}/packaging/windows/assets/sports1-starbonding-ad.png"
        "$<TARGET_FILE_DIR:starbonding>/assets/sports1-starbonding-ad.png"
)
