cmake_minimum_required(VERSION 3.30)
project(TriAevumAndroidRenderer LANGUAGES C CXX)
if(NOT ANDROID OR NOT CMAKE_ANDROID_ARCH_ABI STREQUAL "arm64-v8a")
    message(FATAL_ERROR "Use the Android NDK arm64-v8a toolchain")
endif()
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
add_compile_definitions(CONTROLLERBUTTONS_T=uint32_t)
set(THREE_DS_RECOMP_ENABLE_VULKAN ON CACHE BOOL "" FORCE)
set(THREE_DS_RECOMP_ENABLE_NRI ON CACHE BOOL "" FORCE)
set(THREE_DS_RECOMP_ENABLE_CACAO OFF CACHE BOOL "" FORCE)
set(THREE_DS_RECOMP_ENABLE_SSSR OFF CACHE BOOL "" FORCE)
# The retained compatibility backend uses GLES headers on Android, never desktop
# GL. This does not select GLES for the application: Vulkan/NRI remains the target.
set(USE_OPENGLES ON CACHE BOOL "" FORCE)
set(ENABLE_SCRIPTING OFF CACHE BOOL "" FORCE)
get_filename_component(root "${CMAKE_CURRENT_SOURCE_DIR}/../../.." ABSOLUTE)
add_subdirectory("${root}/runtime/three_ds_recomp" renderer)
add_executable(triaevum_android_renderer_link_probe renderer_link_probe.cpp)
target_link_libraries(triaevum_android_renderer_link_probe PRIVATE three_ds_recomp_runtime three_ds_recomp_shaderc NRI)
target_compile_definitions(triaevum_android_renderer_link_probe PRIVATE
    $<TARGET_PROPERTY:three_ds_recomp_runtime,COMPILE_DEFINITIONS>)
target_link_options(triaevum_android_renderer_link_probe PRIVATE -Wl,--no-undefined)
