# Android CMake build for dav1d AV1 decoder cmake_minimum_required(VERSION 3.10) project(VavCore-Android) # Set Android ABI if(NOT ANDROID_ABI) set(ANDROID_ABI "arm64-v8a") endif() # Set library directory based on ABI if(ANDROID_ABI STREQUAL "arm64-v8a") set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vavcore/libs/arm64-v8a") elseif(ANDROID_ABI STREQUAL "armeabi-v7a") set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vavcore/libs/armeabi-v7a") else() message(FATAL_ERROR "Unsupported Android ABI: ${ANDROID_ABI}") endif() # Include directories include_directories(${CMAKE_CURRENT_SOURCE_DIR}/vavcore/include) # Import dav1d as prebuilt library add_library(dav1d SHARED IMPORTED) set_target_properties(dav1d PROPERTIES IMPORTED_LOCATION ${LIB_DIR}/libdav1d.so INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/vavcore/include ) # Also provide static library option add_library(dav1d_static STATIC IMPORTED) set_target_properties(dav1d_static PROPERTIES IMPORTED_LOCATION ${LIB_DIR}/libdav1d.a INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/vavcore/include ) # VavCore sources for Android set(VAVCORE_ANDROID_SOURCES # Common VavCore sources (only .cpp files) vavcore/src/Decoder/VideoDecoderFactory.cpp vavcore/src/Decoder/AV1Decoder.cpp vavcore/src/FileIO/WebMFileReader.cpp # Android-specific sources vavcore/src/Decoder/MediaCodecAV1Decoder.cpp # Test/example sources tests/native/android_test.cpp ) # Include directories for VavCore include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/vavcore/src ${CMAKE_CURRENT_SOURCE_DIR}/vavcore/include ) # Add platform-specific preprocessor definitions add_definitions(-DANDROID -DVAVCORE_PLATFORM_ANDROID) # Create VavCore Android library add_library(vavcore-android SHARED ${VAVCORE_ANDROID_SOURCES} ) target_link_libraries(vavcore-android dav1d mediandk # Android MediaCodec NDK android # Android native library log # Android log library )