cmake_minimum_required(VERSION 3.24)
project(EpicTunerImGuiInspector LANGUAGES C CXX)
find_package(EpicTunerSDK 1.0 REQUIRED CONFIG)
find_package(OpenGL REQUIRED)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)
if(UNIX AND NOT APPLE)
    set(GLFW_BUILD_WAYLAND OFF CACHE BOOL "" FORCE)
endif()
add_subdirectory(../../vendor/glfw ${CMAKE_CURRENT_BINARY_DIR}/glfw)
set_target_properties(glfw PROPERTIES POSITION_INDEPENDENT_CODE ON)
add_library(et-example-imgui STATIC
    ../../vendor/imgui/imgui.cpp ../../vendor/imgui/imgui_draw.cpp
    ../../vendor/imgui/imgui_tables.cpp ../../vendor/imgui/imgui_widgets.cpp
    ../../vendor/imgui/backends/imgui_impl_glfw.cpp
    ../../vendor/imgui/backends/imgui_impl_opengl3.cpp)
target_include_directories(et-example-imgui PUBLIC ../../vendor/imgui ../../vendor/imgui/backends)
set_target_properties(et-example-imgui PROPERTIES POSITION_INDEPENDENT_CODE ON)
if(UNIX AND NOT APPLE)
    target_compile_definitions(et-example-imgui PRIVATE ET_IMGUI_GLFW_X11_ONLY)
endif()
target_link_libraries(et-example-imgui PUBLIC glfw OpenGL::GL)
add_library(imgui-inspector MODULE inspector.cpp)
target_link_libraries(imgui-inspector PRIVATE EpicTuner::SDKCpp et-example-imgui)
set_target_properties(imgui-inspector PROPERTIES PREFIX "" CXX_VISIBILITY_PRESET hidden)
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" processor)
if(processor MATCHES "^(arm64|aarch64)$")
    set(ET_ARCH arm64)
elseif(processor MATCHES "^(amd64|x86_64)$")
    set(ET_ARCH x64)
else()
    message(FATAL_ERROR "Unsupported architecture")
endif()
if(WIN32 AND ET_ARCH STREQUAL "x64")
    set(ET_PLATFORM windows-x64)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
    set(ET_PLATFORM linux-${ET_ARCH})
else()
    message(FATAL_ERROR "Unsupported platform")
endif()
configure_file(plugin.json.in plugin.json @ONLY)
configure_file(package-manifest.json.in package-manifest.json @ONLY)
