cmake_minimum_required(VERSION 3.22.1)
project(ninaplayer_python C)

if(ANDROID_ABI STREQUAL "x86_64")
    # R15 accelerated-emulator bridge. It is selected only with -Pninaplayer.testAbi=x86_64.
    add_library(ninaplayer_python SHARED ../../debug/cpp/ninaplayer_python_fixture.c)
    target_link_libraries(ninaplayer_python PRIVATE log android)
else()
    if(NOT DEFINED NINAPLAYER_PYTHON_PREFIX)
        message(FATAL_ERROR "NINAPLAYER_PYTHON_PREFIX is required. Run: python3 tools/np.py runtime-prepare")
    endif()

    set(PYTHON_SO "${NINAPLAYER_PYTHON_PREFIX}/lib/libpython3.14.so")
    if(NOT EXISTS "${PYTHON_SO}")
        message(FATAL_ERROR "Embedded CPython library missing at ${PYTHON_SO}. Run runtime-prepare first.")
    endif()

    add_library(python314 SHARED IMPORTED)
    set_target_properties(python314 PROPERTIES IMPORTED_LOCATION "${PYTHON_SO}")

    add_library(ninaplayer_python SHARED ninaplayer_python.c)
    target_include_directories(ninaplayer_python PRIVATE "${NINAPLAYER_PYTHON_PREFIX}/include/python3.14")
    target_link_libraries(ninaplayer_python PRIVATE python314 log android)
endif()

# NDK r28+ aligns 16 KB by default; keep explicit linker constraints as a defense-in-depth gate.
target_link_options(ninaplayer_python PRIVATE
    "-Wl,-z,max-page-size=16384"
    "-Wl,-z,common-page-size=16384"
)
