cmake_minimum_required(VERSION 3.18)
project(ffmpeg_decrypt)

# FFmpeg headers (from our cross-compiled build)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ffmpeg_headers)

# Android-only 平台头 stub：iOS 共享的 ffmpeg_decrypt_core.c 引用了 <os/log.h>
# 这类 Apple-only 头，在 Android NDK 缺失。stub 目录提供 no-op 兼容头，
# 让同一份源文件在两端都能编译，且不需要修改 ios/ 下的源文件。
# sync.sh-resilient: 这里的 stubs 全部活在 android/ 目录下，sync.sh 只覆盖
# ios/ILookPlayerCore/，不会被 iOS 上游同步覆盖丢失。
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/android_stubs)

# 共享 iOS 的解密核心源文件（ilook-ios-player 是唯一源头，通过 sync.sh 同步到
# ios/ILookPlayerCore/，Android 直接引用同一份 .c/.h，消除双端副本）。
set(IOS_DECRYPT_CORE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../ios/ILookPlayerCore/Sources/Engine)
include_directories(${IOS_DECRYPT_CORE_DIR})

# Pre-built FFmpeg shared libraries
set(FFMPEG_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})

add_library(avutil SHARED IMPORTED)
set_target_properties(avutil PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB_DIR}/libavutil.so)

add_library(avcodec SHARED IMPORTED)
set_target_properties(avcodec PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB_DIR}/libavcodec.so)

add_library(avformat SHARED IMPORTED)
set_target_properties(avformat PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB_DIR}/libavformat.so)

add_library(swscale SHARED IMPORTED)
set_target_properties(swscale PROPERTIES IMPORTED_LOCATION ${FFMPEG_LIB_DIR}/libswscale.so)

# Our JNI library
add_library(ffmpeg_decrypt SHARED
    ${IOS_DECRYPT_CORE_DIR}/ffmpeg_decrypt_core.c
    ffmpeg_decrypt_jni.c
)

# 给共享 .c 文件强制 prepend Android 端 FFmpeg 兼容头，把 av_register_all()
# 等 4.x 残留 API 替换成 no-op。仅作用于该单一文件，不影响 jni.c 的编译。
set_source_files_properties(${IOS_DECRYPT_CORE_DIR}/ffmpeg_decrypt_core.c
    PROPERTIES COMPILE_OPTIONS
    "-include;${CMAKE_CURRENT_SOURCE_DIR}/android_stubs/android_ffmpeg_compat.h")

target_link_libraries(ffmpeg_decrypt
    avformat avcodec swscale avutil
    android
    log
    jnigraphics
)
