cmake_minimum_required(VERSION 3.25)
project(agc_godot_editor LANGUAGES CXX)
if(NOT MSVC OR NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
    message(FATAL_ERROR "Godot editor payload requires MSVC x64")
endif()
find_package(Python3 REQUIRED COMPONENTS Interpreter)
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded CACHE STRING "Static runtime" FORCE)
set(GODOTCPP_TARGET editor CACHE STRING "Editor bindings" FORCE)
set(GODOTCPP_BUILD_PROFILE "${CMAKE_CURRENT_SOURCE_DIR}/build-profile.json" CACHE FILEPATH "Minimal bindings" FORCE)
set(GODOTCPP_USE_STATIC_CPP ON CACHE BOOL "Static runtime" FORCE)
set(GODOTCPP_USE_HOT_RELOAD OFF CACHE BOOL "Explicit unload/reload only" FORCE)
set(GODOTCPP_ENABLE_TESTING OFF CACHE BOOL "Do not package upstream tests" FORCE)
if(NOT EXISTS "${AGC_GODOT_CPP_SOURCE}/CMakeLists.txt")
    message(FATAL_ERROR "Run build.ps1 to prepare the verified godot-cpp source")
endif()
add_subdirectory("${AGC_GODOT_CPP_SOURCE}" godot-cpp EXCLUDE_FROM_ALL SYSTEM)
add_library(agc_godot_editor SHARED src/native.cpp)
target_compile_features(agc_godot_editor PRIVATE cxx_std_17)
target_link_libraries(agc_godot_editor PRIVATE godot::cpp)
target_include_directories(agc_godot_editor PRIVATE "${AGC_GENERATED_DIR}")
target_compile_options(agc_godot_editor PRIVATE /W4 /WX /utf-8)
set_target_properties(agc_godot_editor PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/payload")
