# native/CMakeLists.txt - top-level native build for the reconstructed project.
#
# Design:
#   * libg   -> reconstructed Supercell "Titan" engine (native/src/libg/**) - the big target.
#   * libcr  -> built from the OWNED source (native/third_party/libcr/**); never decompiled.
#   * libfmod-> NOT built here; the official prebuilt arm64/v7a .so is dropped into jniLibs
#               (or a compatibility shim in native/compatibility/fmod_shim provides its symbols).

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

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

# ---- libg (reconstructed engine) ----
file(GLOB_RECURSE LIBG_SRC CONFIGURE_DEPENDS
     "${CMAKE_CURRENT_SOURCE_DIR}/src/libg/*.c"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/libg/*.cpp")
if(LIBG_SRC)
  add_library(g SHARED ${LIBG_SRC})
  target_include_directories(g PRIVATE
    "${CMAKE_CURRENT_SOURCE_DIR}/include"
    "${CMAKE_CURRENT_SOURCE_DIR}/third_party/fmod/include")
  if(ANDROID)
    target_link_libraries(g PRIVATE log android GLESv2 EGL m dl)
    # FMOD linked as prebuilt import when present:
    set(FMOD_SO "${CMAKE_CURRENT_SOURCE_DIR}/third_party/fmod/${ANDROID_ABI}/libfmod.so")
    if(EXISTS "${FMOD_SO}")
      add_library(fmod SHARED IMPORTED)
      set_target_properties(fmod PROPERTIES IMPORTED_LOCATION "${FMOD_SO}")
      target_link_libraries(g PRIVATE fmod)
    endif()
  endif()
else()
  message(STATUS "native: src/libg not populated yet Skipping target 'g'.")
endif()

# ---- libcr (owned source) ----
file(GLOB_RECURSE LIBCR_SRC CONFIGURE_DEPENDS
     "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libcr/*.c"
     "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libcr/*.cpp")
if(LIBCR_SRC)
  add_library(cr SHARED ${LIBCR_SRC})
  target_include_directories(cr PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libcr/include")
  if(ANDROID)
    target_link_libraries(cr PRIVATE log z android m dl)
  endif()
else()
  message(STATUS "native: third_party/libcr not present yet. Drop the OWNED libcr source here")
endif()

# ---- optional FMOD compatibility shim (fallback when no licensed FMOD binary) ----
file(GLOB_RECURSE FMOD_SHIM_SRC CONFIGURE_DEPENDS
     "${CMAKE_CURRENT_SOURCE_DIR}/compatibility/fmod_shim/*.cpp")
if(FMOD_SHIM_SRC AND NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/third_party/fmod/${ANDROID_ABI}/libfmod.so")
  add_library(fmod SHARED ${FMOD_SHIM_SRC})
  target_include_directories(fmod PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/third_party/fmod/include")
  if(ANDROID)
    target_link_libraries(fmod PRIVATE log OpenSLES m dl)
  endif()
endif()
