add_executable(openroller-desktop
    src/AudioManager.cpp
    src/CabinetBackend.cpp
    src/LevelLoader.cpp
    src/ServiceMenu.cpp
    src/SongSelect.cpp
    src/main.cpp
)

set_target_properties(openroller-desktop PROPERTIES OUTPUT_NAME OpenRoller)

target_include_directories(openroller-desktop PRIVATE include)
target_link_libraries(openroller-desktop
    PRIVATE
        Vectorail::Core
        Vectorail::GC
        Vectorail::GCEffects
)

if(MINGW AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
    target_link_options(openroller-desktop PRIVATE
        -static -static-libgcc -static-libstdc++)
endif()

if(MSVC)
    target_compile_options(openroller-desktop PRIVATE /W4)
else()
    target_compile_options(openroller-desktop PRIVATE -Wall -Wextra -Wpedantic)
endif()

configure_file(openroller.cfg openroller.cfg COPYONLY)
file(COPY shaders DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")

add_custom_command(TARGET openroller-desktop POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_directory
        "${CMAKE_CURRENT_SOURCE_DIR}/shaders"
        "$<TARGET_FILE_DIR:openroller-desktop>/shaders"
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
        "${CMAKE_CURRENT_SOURCE_DIR}/openroller.cfg"
        "$<TARGET_FILE_DIR:openroller-desktop>/openroller.cfg"
    VERBATIM
)

if(WIN32 AND TARGET SDL3::SDL3-shared)
    add_custom_command(TARGET openroller-desktop POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy_if_different
            "$<TARGET_FILE:SDL3::SDL3-shared>"
            "$<TARGET_FILE_DIR:openroller-desktop>"
        VERBATIM
    )
    install(FILES "$<TARGET_FILE:SDL3::SDL3-shared>" DESTINATION .)
endif()

install(TARGETS openroller-desktop RUNTIME DESTINATION .)
install(DIRECTORY shaders DESTINATION .)
install(FILES openroller.cfg DESTINATION .)
