131 lines
3.9 KiB
CMake
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 "==============================================") |