create fallback gtest subproject dependency

Signed-off-by: Zane Shelley <zshelle@us.ibm.com>
Change-Id: I6b0ce32242a0a74b56f4a163cfb3a1e15fe8a7ee
diff --git a/test/meson.build b/test/meson.build
index dc374fb..730c19a 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,3 +1,25 @@
+# Get the gtest/gmock dependencies.
+gtest_dep = dependency('gtest', main: true, disabler: true, required: false)
+gmock_dep = dependency('gmock', disabler: true, required: false)
+if not gtest_dep.found() or not gmock_dep.found()
+    cmake = import('cmake')
+    gtest_proj = cmake.subproject('googletest',
+                                  required: false)
+    if gtest_proj.found()
+        gtest_dep = declare_dependency(
+            dependencies: [
+                dependency('threads'),
+                gtest_proj.dependency('gtest'),
+                gtest_proj.dependency('gtest_main'),
+            ]
+        )
+        gmock_dep = gtest_proj.dependency('gmock')
+    else
+        assert(not get_option('tests').enabled(),
+               'Googletest is required if tests are enabled')
+    endif
+endif
+
 test_arg = [
     '-DTEST_TRACE',
 ]
@@ -15,14 +37,10 @@
   '../analyzer/service_data.cpp',
 )
 
-gtest = dependency('gtest', main : true, required : false, method : 'system')
-
-if gtest.found()
-    foreach t : tests
-        test(t, executable(t.underscorify(), [ t + '.cpp', analyzer_src ],
-                           link_with : [ util_lib ],
-                           dependencies : [ libhei_dep, gtest ],
-                           cpp_args : test_arg,
-                           include_directories : incdir))
-    endforeach
-endif
+foreach t : tests
+    test(t, executable(t.underscorify(), [ t + '.cpp', analyzer_src ],
+                       link_with : [ util_lib ],
+                       dependencies : [ libhei_dep, gtest_dep ],
+                       cpp_args : test_arg,
+                       include_directories : incdir))
+endforeach