# crackdown - ReXGlue Recompiled Project
# Generated by: rexglue migrate
#
# This file is SDK-managed. Running 'rexglue migrate' will overwrite it.

cmake_minimum_required(VERSION 3.25)
project(crackdown LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(REXSDK_DIR "" CACHE PATH "Path to rexglue-sdk source tree")
if(REXSDK_DIR)
    add_subdirectory("${REXSDK_DIR}" rexglue-sdk)
else()
    find_package(rexglue QUIET CONFIG)
    if(NOT rexglue_FOUND)
        message(FATAL_ERROR
            "ReXGlue SDK not found. Either:\n"
            "  - Set REXSDK_DIR to the rexglue-sdk source tree (e.g. thirdparty/rexglue-sdk)\n"
            "  - Install the SDK package and ensure it is on CMAKE_PREFIX_PATH")
    endif()
endif()

# Sources
set(CRACKDOWN_SOURCES
    src/main.cpp
    src/cache.cpp
)

# Include generated code if codegen has been run
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/generated/sources.cmake")
    include(generated/sources.cmake)
    list(APPEND CRACKDOWN_SOURCES ${GENERATED_SOURCES})
endif()

if(WIN32)
    add_executable(crackdown WIN32 ${CRACKDOWN_SOURCES})
else()
    add_executable(crackdown ${CRACKDOWN_SOURCES})
endif()

target_include_directories(crackdown PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}/generated
)

target_link_libraries(crackdown PRIVATE
    rex::core
    rex::system
    rex::kernel
    rex::graphics
    rex::ui
)

# Platform entry point, ReXApp source, and platform-specific settings
rexglue_configure_target(crackdown)

# Codegen target - run 'cmake --build . --target crackdown_codegen'
add_custom_target(crackdown_codegen
    COMMAND $<TARGET_FILE:rex::rexglue> codegen ${CMAKE_CURRENT_SOURCE_DIR}/crackdown_config.toml
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    COMMENT "Generating recompiled code for crackdown"
    VERBATIM
)
