From: Boyuan Yang <byang@debian.org>
Date: Sat, 16 Aug 2025 19:16:12 -0400
Subject: Use system googletest

Forwarded: not-needed
---
 CMakeLists.txt | 45 ++++++++++++++++++++++++---------------------
 1 file changed, 24 insertions(+), 21 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 897b3a6..8bee414 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -399,45 +399,48 @@ if(ENABLE_WEBMTS)
 endif()
 
 if(ENABLE_TESTS)
-  set(GTEST_SRC_DIR
-      "${LIBWEBM_SRC_DIR}/../googletest"
-      CACHE PATH "Path to Googletest git repository.")
-  # This directory is where libwebm will build googletest dependencies.
-  set(GTEST_BUILD_DIR "${CMAKE_BINARY_DIR}/googletest_build")
-
-  if(LIBWEBM_DISABLE_GTEST_CMAKE)
-    add_library(gtest STATIC "${GTEST_SRC_DIR}/googletest/src/gtest-all.cc")
-    add_library(gtest_main STATIC
-                "${GTEST_SRC_DIR}/googletest/src/gtest_main.cc")
-    target_link_libraries(gtest_main PUBLIC gtest)
-    include_directories("${GTEST_SRC_DIR}/googletest")
-  else()
-    add_subdirectory("${GTEST_SRC_DIR}" "${GTEST_BUILD_DIR}")
+  if(PKG_CONFIG_FOUND)
+    pkg_check_modules(PC_GTEST gtest>=1.10.0 QUIET)
+    pkg_check_modules(PC_GTEST_MAIN gtest_main>=1.10.0 QUIET)
+    set(GTEST_VERSION ${PC_GTEST_VERSION})
+  elseif(WIN32)
+    set(GTTEST_VERSION 1.10.0)
   endif()
-  include_directories("${GTEST_SRC_DIR}/googletest/include")
+
+  find_path(GTEST_INCLUDE_DIR NAMES gtest/gtest.h PATHS ${PC_GTEST_INCLUDEDIR})
+  find_library(GTEST_LIBRARY_RELEASE NAMES gtest PATHS ${PC_GTEST_LIBDIR})
+  find_library(GTEST_LIBRARY_DEBUG NAMES gtestd PATHS ${PC_GTEST_LIBDIR})
+  find_library(GTEST_MAIN_LIBRARY_RELEASE NAMES gtest_main PATHS ${PC_GTEST_LIBDIR})
+  find_library(GTEST_MAIN_LIBRARY_DEBUG NAMES gtest_maind PATHS ${PC_GTEST_LIBDIR})
+
+  include(SelectLibraryConfigurations)
+  select_library_configurations(GTEST)
+  select_library_configurations(GTEST_MAIN)
+
+  include_directories(${GTEST_INCLUDE_DIR})
 
   add_executable(mkvmuxer_tests ${mkvmuxer_tests_sources})
-  target_link_libraries(mkvmuxer_tests LINK_PUBLIC gtest_main webm atomic pthread)
+  target_link_libraries(mkvmuxer_tests LINK_PUBLIC gtest gtest_main webm atomic pthread)
 
   add_executable(mkvparser_tests ${mkvparser_tests_sources})
-  target_link_libraries(mkvparser_tests LINK_PUBLIC gtest_main webm atomic pthread)
+  target_link_libraries(mkvparser_tests LINK_PUBLIC gtest gtest_main webm atomic pthread)
 
   add_executable(vp9_header_parser_tests ${vp9_header_parser_tests_sources})
-  target_link_libraries(vp9_header_parser_tests LINK_PUBLIC gtest_main webm atomic pthread)
+  target_link_libraries(vp9_header_parser_tests LINK_PUBLIC gtest gtest_main webm atomic pthread)
 
   add_executable(vp9_level_stats_tests ${vp9_level_stats_tests_sources})
-  target_link_libraries(vp9_level_stats_tests LINK_PUBLIC gtest_main webm atomic pthread)
+  target_link_libraries(vp9_level_stats_tests LINK_PUBLIC gtest gtest_main webm atomic pthread)
 
   if(ENABLE_WEBMTS)
     add_executable(webm2pes_tests ${webm2pes_tests_sources}
                                   $<TARGET_OBJECTS:webmts>)
-    target_link_libraries(webm2pes_tests LINK_PUBLIC gtest_main webm atomic pthread)
+    target_link_libraries(webm2pes_tests LINK_PUBLIC gtest gtest_main webm atomic pthread)
   endif()
 
   if(ENABLE_WEBM_PARSER)
     include_directories("${GTEST_SRC_DIR}/googlemock/include")
     add_executable(webm_parser_tests ${webm_parser_tests_sources})
-    target_link_libraries(webm_parser_tests LINK_PUBLIC gmock gtest_main webm atomic pthread)
+    target_link_libraries(webm_parser_tests LINK_PUBLIC gmock gtest gtest_main webm atomic pthread)
   endif()
 endif()
 
