cmake_minimum_required(VERSION 3.22)
project(yama_client LANGUAGES CXX C)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# YAMA 根目录（相对于本文件：cpp/ → main/ → src/ → app/ → android/ → YAMA/）
get_filename_component(YAMA_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../" ABSOLUTE)

# ---- 头文件搜索路径（与 linux/CMakeLists.txt 同构）----
include_directories(
    ${YAMA_ROOT}
    ${YAMA_ROOT}/client
    ${YAMA_ROOT}/compress
    ${CMAKE_CURRENT_SOURCE_DIR}   # android_compat.h
)

# ---- 强制注入兼容头（替代修改共用源文件）----
add_compile_options(-include "${CMAKE_CURRENT_SOURCE_DIR}/android_compat.h")

# ---- 核心源文件（与 linux/CMakeLists.txt 相同）----
set(CORE_SOURCES
    ${YAMA_ROOT}/client/Buffer.cpp
    ${YAMA_ROOT}/client/IOCPClient.cpp
    ${YAMA_ROOT}/client/sign_shim_unix.cpp
    ${YAMA_ROOT}/common/logger.cpp
    ${YAMA_ROOT}/common/ikcp.c
)

# ---- Android NDK 入口 ----
set(ANDROID_SOURCES
    main.cpp
)

add_library(yama SHARED ${CORE_SOURCES} ${ANDROID_SOURCES})

# ---- 预编译静态库（由 android/build_android_libs.ps1 产出）----
# 支持 arm64-v8a / armeabi-v7a（真机）和 x86 / x86_64（Android 模拟器）
target_link_libraries(yama PRIVATE
    "${CMAKE_CURRENT_SOURCE_DIR}/lib/${ANDROID_ABI}/libsign.a"
)
target_link_libraries(yama PRIVATE
    "${CMAKE_CURRENT_SOURCE_DIR}/lib/${ANDROID_ABI}/libzstd.a"
)

# ---- Android 系统库 ----
target_link_libraries(yama PRIVATE android log)

# ---- 编译选项 ----
target_compile_options(yama PRIVATE
    -O2
    -fvisibility=hidden
    -Wno-unused-parameter
    -Wno-missing-field-initializers
)
