Files
video-v1/vav2/platforms/android/tests/unit-tests/CMakeLists.txt
2025-09-30 19:54:29 +09:00

131 lines
3.9 KiB
CMake

cmake_minimum_required(VERSION 3.18.1)
project(VavCore-Android-UnitTests)
# Set C++ standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Android configuration check
if(NOT ANDROID)
message(FATAL_ERROR "This CMakeLists.txt is for Android builds only")
endif()
message(STATUS "Building VavCore Android Unit Tests")
# VavCore root directory (relative to this CMakeLists.txt)
get_filename_component(VAVCORE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../vavcore" ABSOLUTE)
get_filename_component(PROJECT_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../../../.." ABSOLUTE)
message(STATUS "VavCore root: ${VAVCORE_ROOT}")
message(STATUS "Project root: ${PROJECT_ROOT}")
# Include directories
include_directories(
${VAVCORE_ROOT}/include
${VAVCORE_ROOT}/src
${PROJECT_ROOT}/include
${PROJECT_ROOT}/include/libwebm
${PROJECT_ROOT}/include/dav1d
${CMAKE_CURRENT_SOURCE_DIR}/include
)
# Google Test setup
include(FetchContent)
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
# Test source files
set(TEST_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/src/MediaCodecAV1DecoderTest.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/WebMFileReaderTest.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/MediaCodecSelectorTest.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/VideoDecoderFactoryTest.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/TestMain.cpp
)
# VavCore source files for testing
set(VAVCORE_TEST_SOURCES
${VAVCORE_ROOT}/src/Decoder/VideoDecoderFactory.cpp
${VAVCORE_ROOT}/src/Decoder/MediaCodecAV1Decoder.cpp
${VAVCORE_ROOT}/src/Decoder/MediaCodecBufferProcessor.cpp
${VAVCORE_ROOT}/src/Decoder/MediaCodecHardwareDetector.cpp
${VAVCORE_ROOT}/src/Decoder/MediaCodecSelector.cpp
${VAVCORE_ROOT}/src/Decoder/MediaCodecAsyncHandler.cpp
${VAVCORE_ROOT}/src/Decoder/MediaCodecSurfaceManager.cpp
${VAVCORE_ROOT}/src/Decoder/AV1Decoder.cpp
${VAVCORE_ROOT}/src/FileIO/WebMFileReader.cpp
${VAVCORE_ROOT}/src/VavCore.cpp
)
# Create test executable
add_executable(VavCoreUnitTests
${TEST_SOURCES}
${VAVCORE_TEST_SOURCES}
)
# Find required Android libraries
find_library(log-lib log)
find_library(mediandk-lib mediandk)
find_library(android-lib android)
find_library(glesv3-lib GLESv3)
find_library(egl-lib EGL)
if(NOT log-lib)
message(FATAL_ERROR "Android log library not found")
endif()
if(NOT mediandk-lib)
message(FATAL_ERROR "Android MediaCodec NDK library not found")
endif()
# Link libraries
target_link_libraries(VavCoreUnitTests
gtest
gtest_main
${mediandk-lib}
${log-lib}
${android-lib}
${glesv3-lib}
${egl-lib}
)
# Import dav1d library
set(DAV1D_LIB_PATH "${PROJECT_ROOT}/lib/android-${ANDROID_ABI}/dav1d/libdav1d.a")
if(EXISTS ${DAV1D_LIB_PATH})
target_link_libraries(VavCoreUnitTests ${DAV1D_LIB_PATH})
message(STATUS "Linked dav1d: ${DAV1D_LIB_PATH}")
else()
message(WARNING "dav1d library not found: ${DAV1D_LIB_PATH}")
endif()
# Import libwebm library
set(LIBWEBM_LIB_PATH "${PROJECT_ROOT}/lib/android-${ANDROID_ABI}/libwebm/libwebm.a")
if(EXISTS ${LIBWEBM_LIB_PATH})
target_link_libraries(VavCoreUnitTests ${LIBWEBM_LIB_PATH})
message(STATUS "Linked libwebm: ${LIBWEBM_LIB_PATH}")
else()
message(WARNING "libwebm library not found: ${LIBWEBM_LIB_PATH}")
endif()
# Compiler options
target_compile_options(VavCoreUnitTests PRIVATE
-Wall
-Wextra
-Wno-unused-parameter
-DANDROID
)
# Enable testing
enable_testing()
add_test(NAME VavCoreUnitTests COMMAND VavCoreUnitTests)
message(STATUS "=== VavCore Android Unit Tests Configuration ===")
message(STATUS "Android ABI: ${ANDROID_ABI}")
message(STATUS "Test sources: ${CMAKE_CURRENT_SOURCE_DIR}/src")
message(STATUS "==============================================")