# mcla - ReXGlue Recompiled Project
#
# SDK boilerplate lives in generated/rexglue.cmake.

cmake_minimum_required(VERSION 3.25)
project(mcla LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(generated/rexglue.cmake)

# Sources
set(MCLA_SOURCES
    src/main.cpp
    src/mcla_app.cpp
    src/crash_trace.cpp
    src/audio_fallback.cpp
    src/frame_timing.cpp
    src/render_perf.cpp
    src/aspect_ratio.cpp
    src/perf_options.cpp
    src/warp_fix.cpp
    src/button_prompts.cpp
    src/settings_menu.cpp
    src/display_gamma.cpp
    src/render_markers.cpp
    src/sampling_profiler.cpp
    src/code_pointer_scan.cpp
    # The shader pack's import and --mcla_prepare_shaders.
    src/shader_prepare.cpp
    src/shader_storage_files.cpp
    # Development: scripted controller input, off by default (fork only).
    src/dev_pad.cpp
)

if(WIN32)
    add_executable(mcla WIN32 ${MCLA_SOURCES})
else()
    add_executable(mcla ${MCLA_SOURCES})
endif()

rexglue_setup_target(mcla)

if(WIN32)
    # timeBeginPeriod for the frame limiter.
    target_link_libraries(mcla PRIVATE winmm)
    # The shader storage: the display drivers in its stamp, a preparation's memory figures (dxgi, psapi).
    target_link_libraries(mcla PRIVATE dxgi psapi)
endif()

# ABI-compatible UserProfile header extension for the initial player name.
target_include_directories(mcla BEFORE PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include")
