GN: add skia_use_mesa for OSMesa in tools.

I tested by running
  $ out/dm --src gm --config mesa
  $ out/nanobench --config mesa --match Xfermode
... but I ran out of patience waiting for nanobench to finish.  Probably works.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2357703002

Review-Url: https://codereview.chromium.org/2357703002
diff --git a/BUILD.gn b/BUILD.gn
index 3c6ac0f..d9f7d79 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -13,6 +13,7 @@
   skia_use_libjpeg_turbo = true
   skia_use_libpng = true
   skia_use_libwebp = !is_fuchsia
+  skia_use_mesa = false
   skia_use_sfntly = !is_fuchsia
   skia_use_vulkan = is_android && defined(ndk_api) && ndk_api >= 24
   skia_use_zlib = true
@@ -595,6 +596,9 @@
   template("test_lib") {
     config(target_name + "_config") {
       include_dirs = invoker.public_include_dirs
+      if (defined(invoker.public_defines)) {
+        defines = invoker.public_defines
+      }
     }
     source_set(target_name) {
       forward_variables_from(invoker, "*", [ "public_include_dirs" ])
@@ -612,6 +616,7 @@
   }
 
   test_lib("gpu_tool_utils") {
+    public_defines = []
     public_include_dirs = [ "tools/gpu" ]
     sources = [
       "tools/gpu/GrContextFactory.cpp",
@@ -640,6 +645,11 @@
     if (skia_use_vulkan) {
       sources += [ "tools/gpu/vk/VkTestContext.cpp" ]
     }
+    if (skia_use_mesa) {
+      public_defines += [ "SK_MESA" ]
+      sources += [ "tools/gpu/gl/mesa/GLTestContext_mesa.cpp" ]
+      libs += [ "OSMesa" ]
+    }
   }
 
   test_lib("flags") {