cmake_minimum_required(VERSION 3.16)
project(libwebm_system_tests)

# Use C++17 as per the package patches  
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Find GoogleTest and GoogleMock
find_package(GTest REQUIRED)

# Find system-installed libwebm library manually since no .pc file exists
find_library(LIBWEBM_LIBRARY 
    NAMES webm libwebm
    REQUIRED
)

# Check for libwebm headers
find_path(LIBWEBM_INCLUDE_DIR
    NAMES webm/mkvparser/mkvparser.h
    PATHS /usr/include
    REQUIRED
)

message(STATUS "Found libwebm library: ${LIBWEBM_LIBRARY}")
message(STATUS "Found libwebm headers: ${LIBWEBM_INCLUDE_DIR}")

# Include directories for headers from the source tree (for test code)
include_directories(${CMAKE_SOURCE_DIR}/../..)
include_directories(${CMAKE_SOURCE_DIR}/../../testing)
include_directories(${CMAKE_SOURCE_DIR}/../../common)

# Include system libwebm headers
include_directories(${LIBWEBM_INCLUDE_DIR})

# Helper function to create test executables
function(add_libwebm_test test_name)
    add_executable(${test_name} ${ARGN})
    target_link_libraries(${test_name} 
        ${LIBWEBM_LIBRARY}
        GTest::gtest 
        GTest::gtest_main
    )
endfunction()

# Main libwebm tests - these test the core mkvparser/mkvmuxer functionality
add_libwebm_test(mkvparser_test 
    ../../testing/mkvparser_test.cc
    ../../testing/test_util.cc
)

add_libwebm_test(mkvmuxer_test
    ../../testing/mkvmuxer_test.cc
    ../../testing/test_util.cc
)
