# mtgodot GDExtension — M0' skeleton (registers Metin2Model, links libgr2).

# --- godot-cpp (submodule @ master) ---
# master has no per-minor branch; it ships bundled extension_api-4-*.json.
# Pin to 4.7 to match the installed editor (4.7.1; patch-level ABI is compatible).
set(GODOTCPP_API_VERSION "4.7" CACHE STRING "Target Godot API version" FORCE)
add_subdirectory(godot-cpp)

# --- libgr2 from the sibling xrender-poc repo ---
# M0': plain sibling-directory reference (both repos live under .../mt/).
# For a portable checkout, either git-submodule xrender-poc or vendor libgr2,
# then pass -DXRENDER_POC_DIR=/path/to/xrender-poc.
set(XRENDER_POC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../xrender-poc"
    CACHE PATH "Path to the xrender-poc repo (provides libgr2)")
if(NOT EXISTS "${XRENDER_POC_DIR}/libgr2/CMakeLists.txt")
    message(FATAL_ERROR
        "libgr2 not found at '${XRENDER_POC_DIR}/libgr2'. "
        "Pass -DXRENDER_POC_DIR=/path/to/xrender-poc")
endif()
add_subdirectory("${XRENDER_POC_DIR}/libgr2" "${CMAKE_CURRENT_BINARY_DIR}/libgr2")

# --- the extension shared library ---
add_library(mtgodot SHARED
    src/register_types.cpp
    src/metin2_model.cpp
    src/metin2_anim.cpp
    src/gr2_bridge.cpp
    src/dxt.cpp
)
target_compile_features(mtgodot PRIVATE cxx_std_20)
target_link_libraries(mtgodot PRIVATE godot::cpp xrender::libgr2)

# Drop the dylib straight into the Godot project where the .gdextension expects it:
#   project/bin/libmtgodot.macos.template_debug.dylib   (Debug)
#   project/bin/libmtgodot.macos.template_release.dylib (Release)
set_target_properties(mtgodot PROPERTIES
    PREFIX "lib"
    OUTPUT_NAME "mtgodot.macos.$<IF:$<CONFIG:Release>,template_release,template_debug>"
    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/project/bin"
)
