• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2015 The ANGLE Project Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//testing/test.gni")
6import("../../gni/angle.gni")
7import("angle_unittests.gni")
8
9declare_args() {
10  build_angle_gles1_conform_tests = checkout_angle_internal
11  build_angle_trace_perf_tests = false
12  build_angle_perftests =
13      is_win || is_linux || is_chromeos || is_android || is_apple || is_fuchsia
14}
15
16declare_args() {
17  build_angle_trace_tests = is_clang && (build_angle_trace_perf_tests ||
18                                         checkout_angle_restricted_traces)
19  if (!build_with_chromium && is_android) {
20    assert(
21        !is_official_build,
22        "is_official_build not supported by ANGLE for Android (https://anglebug.com/7381)")
23  }
24}
25
26if (is_android) {
27  android_library("native_test_java") {
28    testonly = true
29    sources = [
30      "test_utils/runner/android/java/src/com/android/angle/test/AngleNativeTest.java",
31      "test_utils/runner/android/java/src/com/android/angle/test/AngleUnitTestActivity.java",
32      "test_utils/runner/android/java/src/com/android/angle/test/TestStatusReporter.java",
33    ]
34
35    deps = [
36      "//build/android:build_java",
37      "//build/android/gtest_apk:native_test_instrumentation_test_runner_java",
38    ]
39  }
40
41  angle_source_set("native_test_support_android") {
42    testonly = true
43    sources = [ "test_utils/runner/android/AngleNativeTest.cpp" ]
44    deps = [ "$angle_root:angle_common" ]
45  }
46}
47
48angle_test("test_utils_unittest_helper") {
49  sources = [
50    "../../util/test_utils_unittest_helper.cpp",
51    "../../util/test_utils_unittest_helper.h",
52    "test_utils/angle_test_instantiate.h",
53    "test_utils/runner/TestSuite_unittest.cpp",
54  ]
55}
56
57test_expectations_sources = [
58  "test_expectations/GPUTestConfig.cpp",
59  "test_expectations/GPUTestConfig.h",
60  "test_expectations/GPUTestExpectationsParser.cpp",
61  "test_expectations/GPUTestExpectationsParser.h",
62]
63if (is_mac) {
64  test_expectations_sources_mac = [
65    "test_expectations/GPUTestConfig_mac.mm",
66    "test_expectations/GPUTestConfig_mac.h",
67  ]
68}
69if (is_ios) {
70  test_expectation_sources_ios = [
71    "test_expectations/GPUTestConfig_ios.mm",
72    "test_expectations/GPUTestConfig_ios.h",
73  ]
74}
75
76angle_static_library("angle_test_expectations") {
77  public_deps = [
78    "$angle_root:angle_common",
79    "$angle_root:angle_gpu_info_util",
80  ]
81  sources = test_expectations_sources
82  if (is_mac) {
83    sources += test_expectations_sources_mac
84    frameworks = [ "Cocoa.framework" ]
85  }
86  if (is_ios) {
87    sources += test_expectation_sources_ios
88    frameworks = [ "Foundation.framework" ]
89  }
90}
91
92config("angle_common_test_utils_config") {
93  include_dirs = [ "." ]
94  defines = []
95  if (angle_enable_gl_desktop_backend) {
96    defines += [ "ANGLE_ENABLE_GL_DESKTOP_BACKEND" ]
97  }
98  if (angle_enable_swiftshader) {
99    defines += [ "ANGLE_ENABLE_SWIFTSHADER" ]
100  }
101}
102
103template("angle_common_test_utils") {
104  assert(defined(invoker.angle_util))
105  angle_source_set(target_name) {
106    testonly = true
107    if (is_ios) {
108      # shared libraries are hidden inside ios_framework_bundle, but we include headers from them
109      check_includes = false
110    }
111    public_configs = [
112      ":angle_common_test_utils_config",
113      "$angle_root:library_name_config",
114    ]
115    public_deps = [
116      "$angle_root:angle_common",
117      "$angle_root:angle_gpu_info_util",
118      "$angle_root/util:${invoker.angle_util}",
119      "//testing/gmock",
120      "//testing/gtest",
121      "//third_party/googletest:gmock",
122      "//third_party/googletest:gtest",
123    ]
124    sources = [
125      "$angle_root/third_party/renderdoc/src/renderdoc_app.h",
126      "test_utils/MultiThreadSteps.cpp",
127      "test_utils/MultiThreadSteps.h",
128      "test_utils/RenderDoc.cpp",
129      "test_utils/RenderDoc.h",
130      "test_utils/angle_test_configs.cpp",
131      "test_utils/angle_test_configs.h",
132      "test_utils/angle_test_instantiate.cpp",
133      "test_utils/angle_test_instantiate.h",
134      "test_utils/angle_test_platform.cpp",
135      "test_utils/angle_test_platform.h",
136      "test_utils/gl_raii.h",
137    ]
138    if (is_apple) {
139      sources += [
140        "test_utils/angle_test_instantiate_apple.h",
141        "test_utils/angle_test_instantiate_apple.mm",
142      ]
143    }
144    data_deps = []
145    if (angle_enable_vulkan_validation_layers) {
146      data_deps += [ "$angle_root/src/common/vulkan:vulkan_validation_layers" ]
147    }
148  }
149}
150
151angle_common_test_utils("angle_common_test_utils_shared") {
152  angle_util = "angle_util"
153}
154
155angle_common_test_utils("angle_common_test_utils_static") {
156  angle_util = "angle_util_static"
157}
158
159# We use this in the restricted trace tests to load driver info.
160angle_test("angle_system_info_test") {
161  sources = [ "angle_system_info_tests_main.cpp" ]
162  deps = [
163    "$angle_root:angle_gpu_info_util",
164    "$angle_root:angle_static",
165    "$angle_root/util:angle_util_static",
166  ]
167}
168
169angle_test("angle_unittests") {
170  sources = angle_unittests_sources + [ "angle_unittest_main.cpp" ]
171
172  # Compiler tests frequently require either TranslatorGLSL or TranslatorESSL.  Build them only if
173  # both are enabled.
174  if (angle_enable_essl && angle_enable_glsl) {
175    sources += angle_unittests_compiler_tests_sources
176
177    if (is_apple) {
178      sources += angle_unittests_glsl_mac_sources
179    }
180    if (angle_enable_metal) {
181      sources += angle_unittests_msl_sources
182    }
183  }
184
185  defines = []
186
187  if (angle_enable_hlsl) {
188    sources += angle_unittests_hlsl_sources
189    defines += [ "ANGLE_ENABLE_HLSL" ]
190  }
191
192  if (angle_enable_gl) {
193    sources += angle_unittests_gl_sources
194  }
195
196  if (angle_enable_wgpu) {
197    sources += angle_unittests_wgsl_sources
198  }
199
200  deps = [
201    ":angle_test_expectations",
202    "$angle_root:angle_json_serializer",
203    "$angle_root:angle_static",
204    "$angle_root:libfeature_support",
205    "$angle_root/util:angle_util_static",
206  ]
207
208  if (angle_enable_vulkan) {
209    sources += [ "compiler_tests/Precise_test.cpp" ]
210    deps += [
211      "$angle_root/src/common/spirv:angle_spirv_base",
212      "$angle_root/src/common/spirv:angle_spirv_headers",
213      "$angle_root/src/common/spirv:angle_spirv_parser",
214      "${angle_spirv_headers_dir}:spv_headers",
215    ]
216  }
217
218  if (!is_android && !is_fuchsia && !is_ios) {
219    # SystemUtils.RunApp, the only unittest using a helper binary, is not supported on these
220    # platforms yet.
221    data_deps = [ ":test_utils_unittest_helper" ]
222  }
223
224  if (is_android) {
225    data += [ "$angle_root/src/tests/angle_android_test_runner.py" ]
226  }
227
228  if (angle_has_rapidjson) {
229    sources += [ "../common/serializer/JsonSerializer_unittest.cpp" ]
230  }
231}
232
233if (is_ios) {
234  bundle_data("angle_end2end_tests_bundle_data") {
235    testonly = true
236    sources = [ "angle_end2end_tests_expectations.txt" ]
237    outputs = [ "{{bundle_resources_dir}}/" +
238                "{{source_root_relative_dir}}/{{source_file_part}}" ]
239  }
240}
241
242if (is_win || is_linux || is_chromeos || is_android || is_fuchsia || is_apple) {
243  import("angle_end2end_tests.gni")
244
245  angle_test("angle_end2end_tests") {
246    include_dirs = [ "." ]
247
248    sources = angle_end2end_tests_sources + [ "angle_end2end_tests_main.cpp" ]
249    libs = []
250    defines = []
251    configs += [ "${angle_root}:libANGLE_config" ]
252
253    if (is_ios) {
254      sources += angle_end2end_tests_ios_sources
255      frameworks = [ "IOSurface.framework" ]
256    }
257    if (is_mac) {
258      sources += angle_end2end_tests_mac_sources
259      frameworks = [
260        "CoreFoundation.framework",
261        "IOSurface.framework",
262      ]
263      ldflags = [
264        "-weak_framework",
265        "Metal",
266      ]
267      cflags_objcc = [
268        "-Wno-nullability-completeness",
269        "-Wno-unguarded-availability",
270      ]
271    }
272    if (is_win) {
273      sources += angle_end2end_tests_win_sources
274    }
275    if (angle_use_x11) {
276      sources += [ "egl_tests/EGLX11VisualTest.cpp" ]
277    }
278    if (angle_use_wayland) {
279      sources += [ "egl_tests/EGLWaylandTest.cpp" ]
280    }
281
282    deps = [
283      ":angle_common_test_utils_shared",
284      "$angle_root:angle_gl_enum_utils",
285      "$angle_root:angle_image_util",
286      "$angle_root:translator",
287    ]
288
289    if (is_ios) {
290      deps += [ ":angle_end2end_tests_bundle_data" ]
291    } else {
292      data = [ "angle_end2end_tests_expectations.txt" ]
293    }
294
295    if (angle_has_rapidjson) {
296      deps += [ "$angle_root:angle_json_serializer" ]
297    }
298
299    if (is_android) {
300      include_dirs += [ "${android_ndk_root}/sysroot/usr/includes" ]
301    }
302
303    data_deps = [ "$angle_root:angle" ]
304
305    if (angle_build_mesa) {
306      data_deps += [ "$angle_root/third_party/mesa" ]
307    }
308
309    if (angle_enable_vulkan) {
310      sources += [
311        "gl_tests/VulkanExternalImageTest.cpp",
312        "gl_tests/VulkanImageTest.cpp",
313        "test_utils/VulkanHelper.cpp",
314        "test_utils/VulkanHelper.h",
315      ]
316      deps += [ "$angle_root/src/common/vulkan" ]
317    }
318
319    if (is_fuchsia) {
320      # TODO(crbug.com/1185811): Investigate removing the requirement for
321      # job_policy_ambient_mark_vmo_exec.
322      test_runner_shard = "//build/config/fuchsia/test/elf_test_ambient_exec_runner.shard.test-cml"
323      additional_manifest_fragments = [
324        "//build/config/fuchsia/test/present_view.shard.test-cml",
325        "//third_party/fuchsia-sdk/sdk/pkg/vulkan/client.shard.cml",
326      ]
327    }
328
329    if (is_ios) {
330      xcode_extra_attributes = {
331        SUPPORTS_MACCATALYST = "YES"
332      }
333
334      # Need to bundle the libraries inside the .app.
335      deps += [ "$angle_root:angle" ]
336    }
337
338    if (angle_enable_gl_desktop_frontend) {
339      defines += [ "ANGLE_ENABLE_GL_DESKTOP_FRONTEND" ]
340    }
341  }
342}
343
344if (is_win || is_linux || is_chromeos || is_android || is_fuchsia || is_apple) {
345  import("angle_white_box_tests.gni")
346
347  angle_test("angle_white_box_tests") {
348    include_dirs = [ "." ]
349    sources = angle_white_box_tests_sources + [ "angle_generic_tests_main.cpp" ]
350
351    if (is_win && angle_enable_d3d11) {
352      sources += angle_white_box_tests_win_sources
353    }
354
355    configs += [ "${angle_root}:libANGLE_config" ]
356
357    deps = [
358      ":angle_common_test_utils_static",
359      "$angle_root:angle_static",
360    ]
361
362    deps += [ "${angle_root}:angle_gl_enum_utils" ]
363
364    if (angle_enable_vulkan) {
365      sources += angle_white_box_tests_vulkan_sources
366      deps += [ "$angle_root/src/common/vulkan:angle_vulkan_entry_points" ]
367    }
368  }
369}
370
371config("angle_maybe_has_histograms") {
372  if (angle_has_histograms) {
373    defines = [ "ANGLE_HAS_HISTOGRAMS=1" ]
374    include_dirs = [ "$root_gen_dir" ]
375  } else {
376    defines = [ "ANGLE_HAS_HISTOGRAMS=0" ]
377  }
378}
379
380template("angle_perftests_common") {
381  assert(defined(invoker.test_utils))
382
383  angle_source_set(target_name) {
384    testonly = true
385    if (is_ios) {
386      # shared libraries are hidden inside ios_framework_bundle, but we include headers from them
387      check_includes = false
388    }
389    sources = [
390      "../common/base/anglebase/trace_event/trace_event.h",
391      "perf_tests/ANGLEPerfTest.cpp",
392      "perf_tests/ANGLEPerfTest.h",
393      "perf_tests/ANGLEPerfTestArgs.cpp",
394      "perf_tests/ANGLEPerfTestArgs.h",
395      "perf_tests/DrawCallPerfParams.cpp",
396      "perf_tests/DrawCallPerfParams.h",
397      "perf_tests/third_party/perf/perf_result_reporter.cc",
398      "perf_tests/third_party/perf/perf_result_reporter.h",
399      "perf_tests/third_party/perf/perf_test.cc",
400      "perf_tests/third_party/perf/perf_test.h",
401      "test_utils/runner/HistogramWriter.h",
402      "test_utils/runner/TestSuite.h",
403    ]
404    public_deps = [
405      "$angle_root:angle_gl_enum_utils",
406      "$angle_root/src/tests:angle_test_expectations",
407      "$angle_root/third_party/rapidjson:rapidjson",
408      "${invoker.test_utils}",
409    ]
410    public_configs += [
411      ":angle_maybe_has_histograms",
412      "$angle_root:libANGLE_config",
413    ]
414  }
415}
416
417angle_perftests_common("angle_perftests_shared") {
418  test_utils = ":angle_common_test_utils_shared"
419}
420
421angle_perftests_common("angle_perftests_static") {
422  test_utils = ":angle_common_test_utils_static"
423}
424
425if (is_win || is_linux || is_chromeos || is_android || is_apple) {
426  import("angle_perftests.gni")
427
428  # This test suite is for perf tests that use ANGLE's internals in some direct way.
429  angle_test("angle_white_box_perftests") {
430    include_dirs = [ "." ]
431    sources =
432        angle_white_box_perf_tests_sources + [ "angle_perftests_main.cpp" ]
433
434    if (angle_enable_d3d11 || angle_enable_d3d9) {
435      sources += [ "perf_tests/IndexDataManagerTest.cpp" ]
436    }
437
438    deps = [
439      ":angle_perftests_static",
440      "$angle_root:angle_static",
441    ]
442
443    data = [
444      "$angle_root/scripts/process_angle_perf_results.py",
445      "$angle_root/src/tests/py_utils/android_helper.py",
446      "$angle_root/src/tests/py_utils/angle_metrics.py",
447      "$angle_root/src/tests/py_utils/angle_path_util.py",
448      "$angle_root/src/tests/run_perf_tests.py",
449    ]
450    data_deps = [ "//testing:run_perf_test" ]
451
452    if (angle_enable_vulkan) {
453      sources += angle_white_box_perf_tests_vulkan_sources
454      deps += [
455        "$angle_glslang_dir:glslang_lib_sources",
456        "$angle_root/src/common/vulkan:angle_vulkan_entry_points",
457      ]
458    }
459
460    # These tests depend on vulkan_command_buffer_utils, which is
461    # not yet compatible with mac and vulkan display/headless backend.
462    if (angle_enable_vulkan && !angle_use_vulkan_display && !is_apple) {
463      sources += angle_white_box_perf_tests_vulkan_command_buffer_sources
464    }
465  }
466}
467
468config("angle_enable_renderdoc") {
469  if (angle_enable_renderdoc) {
470    defines = [ "ANGLE_TEST_ENABLE_RENDERDOC_CAPTURE" ]
471  }
472}
473
474if (build_angle_perftests) {
475  import("angle_perftests.gni")
476
477  # This test suite is designed to run against a generic GL implementation.
478  angle_test("angle_perftests") {
479    include_dirs = [ "." ]
480    sources = angle_perf_tests_sources + [ "angle_perftests_main.cpp" ]
481
482    deps = [
483      ":angle_perftests_shared",
484      "$angle_spirv_tools_dir:spvtools_val",
485    ]
486
487    data = [
488      "$angle_root/scripts/process_angle_perf_results.py",
489      "$angle_root/src/tests/py_utils/android_helper.py",
490      "$angle_root/src/tests/py_utils/angle_metrics.py",
491      "$angle_root/src/tests/py_utils/angle_path_util.py",
492      "$angle_root/src/tests/run_perf_tests.py",
493    ]
494
495    data_deps = [
496      "${angle_root}:angle",
497      "//testing:run_perf_test",
498    ]
499
500    if (angle_build_mesa) {
501      data_deps += [ "$angle_root/third_party/mesa" ]
502    }
503
504    if (is_win || is_linux || is_chromeos) {
505      data_deps += [ "${angle_root}/third_party/glmark2:glmark2_angle" ]
506    }
507    if (is_win && target_cpu != "arm64") {
508      data_deps += [ "${angle_root}/third_party/glmark2:glmark2_wgl" ]
509    }
510    if (is_linux || is_chromeos) {
511      data_deps += [ "${angle_root}/third_party/glmark2:glmark2_glx" ]
512    }
513  }
514}
515
516if (build_angle_trace_tests) {
517  angle_test("angle_trace_tests") {
518    # http://anglebug.com/6009: Traces with long shaders are hitting string literal
519    # limit in MSVC, so only compile them when using clang
520    assert(is_clang, "angle trace tests require clang")
521
522    if (is_ios) {
523      # shared libraries are hidden inside ios_framework_bundle, but we include headers from them
524      check_includes = false
525    }
526
527    sources = [
528      "angle_trace_tests_main.cpp",
529      "perf_tests/TracePerfTest.cpp",
530    ]
531
532    deps = [
533      ":angle_perftests_shared",
534      "$angle_root:angle_compression",
535      "$angle_root/util:angle_frame_capture_test_utils",
536      "$angle_root/util:angle_png_utils",
537    ]
538
539    # If this flag is set, we want to build the trace libraries independent of the APK, i.e. not packaged.
540    # We're doing this for size reasons - the APK is too large if you include all the traces.
541    if (restricted_traces_outside_of_apk) {
542      deps += [ "$angle_root/util:angle_trace_loader" ]
543    } else {
544      deps += [
545        "$angle_root/util:angle_trace_interpreter",
546        "restricted_traces:angle_restricted_traces",
547      ]
548    }
549
550    data = [ "$angle_root/src/tests/py_utils/android_helper.py" ]
551
552    if (is_android) {
553      data += [ "$angle_root/src/tests/angle_android_test_runner.py" ]
554      android_test_runner_script =
555          "$angle_root/src/tests/angle_android_test_runner.py"
556    }
557
558    data_deps = [ "${angle_root}:angle" ]
559
560    if (is_clang) {
561      # Allows us to edit traces and remove chunks of code without compile warnings.
562      cflags_cc = [ "-Wno-unused-const-variable" ]
563    }
564  }
565
566  group("angle_trace_perf_tests") {
567    testonly = true
568
569    data = [
570      "$angle_root/scripts/process_angle_perf_results.py",
571      "$angle_root/src/tests/py_utils/angle_metrics.py",
572      "$angle_root/src/tests/py_utils/angle_path_util.py",
573      "$angle_root/src/tests/run_perf_tests.py",
574    ]
575
576    data_deps = [
577      ":angle_trace_tests",
578      "//testing:run_perf_test",
579    ]
580
581    if (restricted_traces_outside_of_apk) {
582      deps = [ "restricted_traces:angle_restricted_traces__unpacked_libs" ]
583    }
584  }
585
586  group("angle_trace_interpreter_tests") {
587    testonly = true
588    data = [
589      "restricted_traces/gen_restricted_traces.py",
590      "restricted_traces/retrace_restricted_traces.py",
591    ]
592    data_deps = [ ":angle_trace_perf_tests" ]
593  }
594
595  group("angle_capture_tests") {
596    testonly = true
597    data = [
598      "capture_tests/capture_tests.py",
599      "capture_tests/expected",
600    ]
601    if (is_android) {
602      data += [ "$angle_root/src/tests/angle_android_test_runner.py" ]
603    }
604    data_deps = [ ":angle_end2end_tests" ]
605  }
606}
607
608###-----------------------------------------------------
609### ES 1 conformance tests
610###-----------------------------------------------------
611
612if (build_angle_gles1_conform_tests) {
613  gles1_conform_root = "$angle_root/third_party/gles1_conform"
614
615  config("angle_gles1_conform_support") {
616    include_dirs = [
617      "$gles1_conform_root",
618      "$gles1_conform_root/conform/conform",
619      "$gles1_conform_root/conform/conformshell",
620      "$gles1_conform_root/ctk",
621      "$gles1_conform_root/fixed",
622      "$gles1_conform_root/platform",
623    ]
624
625    defines = [
626      "COMMON",
627      "CONFORM_ALTERNATE_MAIN",
628
629      # NULLWS defines is only used in covegl/native.h, remove here.
630      # if needed please add it in angle_test("angle_gles1_covegl_no_gtest") defines.
631      #"NULLWS",
632    ]
633
634    # This is used by the tests to typedef uint32_t. For some reason only needed on mac.
635    if (is_apple) {
636      defines += [ "__linux" ]
637    }
638
639    cflags = []
640    if (is_clang) {
641      # Remove when crbug.com/428099 is resolved.
642      cflags += [
643        "-Wno-implicit-function-declaration",
644        "-Wno-implicit-int-float-conversion",
645        "-Wno-int-to-pointer-cast",
646        "-Wno-self-assign",
647        "-Wno-sign-compare",
648        "-Wno-unreachable-code-break",
649        "-Wno-unused-const-variable",
650        "-Wno-unused-result",
651        "-Wno-unused-variable",
652
653        # Upstream tests do null pointer arithmetic, so disable those warnings.
654        "-Wno-null-pointer-arithmetic",
655      ]
656    } else {
657      cflags += [ "/wd4101" ]  # unreferenced local variable
658    }
659  }
660
661  # This source set is a bit special so we don't use angle_source_set.
662  angle_gles1_conform_common_source = [
663    "$gles1_conform_root/ctk/ctk.h",
664    "$gles1_conform_root/ctk/ctkn.c",
665    "$gles1_conform_root/ctk/glext.c",
666    "$gles1_conform_root/fixed/fixed.c",
667    "$gles1_conform_root/fixed/float64.c",
668    "$gles1_conform_root/fixed/int32.c",
669    "$gles1_conform_root/fixed/int64.c",
670    "$gles1_conform_root/platform/gl_fixed_point.h",
671    "$gles1_conform_root/platform/gl_single_precision.h",
672    "$gles1_conform_root/platform/math_fixed.h",
673    "$gles1_conform_root/platform/math_float.h",
674    "$gles1_conform_root/platform/platform.h",
675    "$gles1_conform_root/platform/platform_gl.h",
676    "$gles1_conform_root/platform/platform_random.h",
677    "$gles1_conform_root/platform/platform_stdlib.h",
678    "$gles1_conform_root/platform/platform_types.h",
679    "$gles1_conform_root/platform/printf_fixed.h",
680    "$gles1_conform_root/platform/printf_float.h",
681    "$gles1_conform_root/platform/random.c",
682    "$gles1_conform_root/platform/stdlib_ansi.h",
683  ]
684
685  source_set("angle_gles1_conformance_no_gtest") {
686    configs += [
687      ":angle_gles1_conform_support",
688      "$angle_root:internal_config",
689    ]
690
691    public_configs = [
692      "$angle_root/util:angle_util_config",
693      "$angle_root:gl_prototypes",
694    ]
695
696    if (is_clang) {
697      cflags_c = [
698        "-Wno-implicit-fallthrough",
699        "-Wno-shadow",
700      ]
701    }
702
703    testonly = true
704
705    public_deps = [
706      "$angle_root:angle_static",
707      "$angle_root/util:angle_util_static",
708    ]
709
710    sources = [
711      "$gles1_conform_root/conform/conform/apfunc.c",
712      "$gles1_conform_root/conform/conform/appl.c",
713      "$gles1_conform_root/conform/conform/bclear.c",
714      "$gles1_conform_root/conform/conform/bcolor.c",
715      "$gles1_conform_root/conform/conform/bcorner.c",
716      "$gles1_conform_root/conform/conform/blend.c",
717      "$gles1_conform_root/conform/conform/bufobj.c",
718      "$gles1_conform_root/conform/conform/clip.c",
719      "$gles1_conform_root/conform/conform/colramp.c",
720      "$gles1_conform_root/conform/conform/copytex.c",
721      "$gles1_conform_root/conform/conform/dither.c",
722      "$gles1_conform_root/conform/conform/divzero.c",
723      "$gles1_conform_root/conform/conform/drawtex.c",
724      "$gles1_conform_root/conform/conform/fogexp.c",
725      "$gles1_conform_root/conform/conform/foglin.c",
726      "$gles1_conform_root/conform/conform/gets.c",
727      "$gles1_conform_root/conform/conform/l_ac.c",
728      "$gles1_conform_root/conform/conform/l_al.c",
729      "$gles1_conform_root/conform/conform/l_am.c",
730      "$gles1_conform_root/conform/conform/l_ap.c",
731      "$gles1_conform_root/conform/conform/l_as.c",
732      "$gles1_conform_root/conform/conform/l_dl.c",
733      "$gles1_conform_root/conform/conform/l_dm.c",
734      "$gles1_conform_root/conform/conform/l_dmn.c",
735      "$gles1_conform_root/conform/conform/l_dmp.c",
736      "$gles1_conform_root/conform/conform/l_em.c",
737      "$gles1_conform_root/conform/conform/l_se.c",
738      "$gles1_conform_root/conform/conform/l_sed.c",
739      "$gles1_conform_root/conform/conform/l_sen.c",
740      "$gles1_conform_root/conform/conform/l_sep.c",
741      "$gles1_conform_root/conform/conform/l_sl.c",
742      "$gles1_conform_root/conform/conform/l_sm.c",
743      "$gles1_conform_root/conform/conform/l_sn.c",
744      "$gles1_conform_root/conform/conform/l_sp.c",
745      "$gles1_conform_root/conform/conform/lineaa.c",
746      "$gles1_conform_root/conform/conform/linehv.c",
747      "$gles1_conform_root/conform/conform/linerast.c",
748      "$gles1_conform_root/conform/conform/logicop.c",
749      "$gles1_conform_root/conform/conform/mask.c",
750      "$gles1_conform_root/conform/conform/mget.c",
751      "$gles1_conform_root/conform/conform/mipgen.c",
752      "$gles1_conform_root/conform/conform/miplevels.c",
753      "$gles1_conform_root/conform/conform/miplin.c",
754      "$gles1_conform_root/conform/conform/mipsel.c",
755      "$gles1_conform_root/conform/conform/mpalette.c",
756      "$gles1_conform_root/conform/conform/mquery.c",
757      "$gles1_conform_root/conform/conform/mstack.c",
758      "$gles1_conform_root/conform/conform/multitex.c",
759      "$gles1_conform_root/conform/conform/mustpass.c",
760      "$gles1_conform_root/conform/conform/packpix.c",
761      "$gles1_conform_root/conform/conform/pntaa.c",
762      "$gles1_conform_root/conform/conform/pntrast.c",
763      "$gles1_conform_root/conform/conform/pntsprt.c",
764      "$gles1_conform_root/conform/conform/pntszary.c",
765      "$gles1_conform_root/conform/conform/polycull.c",
766      "$gles1_conform_root/conform/conform/readfmt.c",
767      "$gles1_conform_root/conform/conform/rescalen.c",
768      "$gles1_conform_root/conform/conform/scissor.c",
769      "$gles1_conform_root/conform/conform/spclear.c",
770      "$gles1_conform_root/conform/conform/spcorner.c",
771      "$gles1_conform_root/conform/conform/spfunc.c",
772      "$gles1_conform_root/conform/conform/spop.c",
773      "$gles1_conform_root/conform/conform/tests.c",
774      "$gles1_conform_root/conform/conform/texcombine.c",
775      "$gles1_conform_root/conform/conform/texdecal.c",
776      "$gles1_conform_root/conform/conform/texedge.c",
777      "$gles1_conform_root/conform/conform/texpalet.c",
778      "$gles1_conform_root/conform/conform/trirast.c",
779      "$gles1_conform_root/conform/conform/tritile.c",
780      "$gles1_conform_root/conform/conform/userclip.c",
781      "$gles1_conform_root/conform/conform/vorder.c",
782      "$gles1_conform_root/conform/conform/vpclamp.c",
783      "$gles1_conform_root/conform/conform/xform.c",
784      "$gles1_conform_root/conform/conform/xformmix.c",
785      "$gles1_conform_root/conform/conform/xformn.c",
786      "$gles1_conform_root/conform/conform/xformvp.c",
787      "$gles1_conform_root/conform/conform/xformw.c",
788      "$gles1_conform_root/conform/conform/zbclear.c",
789      "$gles1_conform_root/conform/conform/zbfunc.c",
790      "$gles1_conform_root/conform/conformshell/conform.h",
791      "$gles1_conform_root/conform/conformshell/driver.c",
792      "$gles1_conform_root/conform/conformshell/driver.h",
793      "$gles1_conform_root/conform/conformshell/path.c",
794      "$gles1_conform_root/conform/conformshell/path.h",
795      "$gles1_conform_root/conform/conformshell/pathdata.c",
796      "$gles1_conform_root/conform/conformshell/pathdata.h",
797      "$gles1_conform_root/conform/conformshell/paths.c",
798      "$gles1_conform_root/conform/conformshell/shell.c",
799      "$gles1_conform_root/conform/conformshell/util.c",
800      "$gles1_conform_root/conform/conformshell/util.h",
801      "$gles1_conform_root/conform/conformshell/utilg.c",
802      "$gles1_conform_root/conform/conformshell/utilg.h",
803      "$gles1_conform_root/conform/conformshell/utilm.c",
804      "$gles1_conform_root/conform/conformshell/utilm.h",
805      "$gles1_conform_root/conform/conformshell/utilp.c",
806      "$gles1_conform_root/conform/conformshell/utilp.h",
807      "$gles1_conform_root/conform/conformshell/utilru.c",
808      "$gles1_conform_root/conform/conformshell/utilru.h",
809      "$gles1_conform_root/conform/conformshell/utils.c",
810      "$gles1_conform_root/conform/conformshell/utils.h",
811      "$gles1_conform_root/conform/conformshell/utilt.c",
812      "$gles1_conform_root/conform/conformshell/utilt.h",
813    ]
814
815    sources += angle_gles1_conform_common_source
816  }
817
818  angle_test("angle_gles1_conformance_tests") {
819    deps = [
820      ":angle_common_test_utils_static",
821      ":angle_gles1_conformance_no_gtest",
822    ]
823
824    include_dirs = [ "." ]
825
826    sources = [
827      "angle_generic_tests_main.cpp",
828      "gles1_conformance_tests/ConformanceTests.cpp",
829      "test_utils/ANGLETest.cpp",
830      "test_utils/ANGLETest.h",
831    ]
832
833    configs += [
834      ":angle_gles1_conform_support",
835      "${angle_root}:libANGLE_config",
836      "${angle_root}:angle_backend_config",
837    ]
838  }
839
840  if (!is_win && !is_apple) {
841    source_set("angle_gles1_covgl_no_gtest") {
842      configs += [
843        ":angle_gles1_conform_support",
844        "$angle_root:internal_config",
845      ]
846
847      public_configs = [
848        "$angle_root/util:angle_util_config",
849        "$angle_root:gl_prototypes",
850      ]
851
852      testonly = true
853
854      public_deps = [
855        "$angle_root:angle_static",
856        "$angle_root/util:angle_util_static",
857      ]
858
859      sources = [
860        "$gles1_conform_root/conform/covgl/a.c",
861        "$gles1_conform_root/conform/covgl/b.c",
862        "$gles1_conform_root/conform/covgl/c.c",
863        "$gles1_conform_root/conform/covgl/d.c",
864        "$gles1_conform_root/conform/covgl/data.c",
865        "$gles1_conform_root/conform/covgl/e.c",
866        "$gles1_conform_root/conform/covgl/enum.c",
867        "$gles1_conform_root/conform/covgl/f.c",
868        "$gles1_conform_root/conform/covgl/g.c",
869        "$gles1_conform_root/conform/covgl/h.c",
870        "$gles1_conform_root/conform/covgl/i.c",
871        "$gles1_conform_root/conform/covgl/l.c",
872        "$gles1_conform_root/conform/covgl/m.c",
873        "$gles1_conform_root/conform/covgl/n.c",
874        "$gles1_conform_root/conform/covgl/o.c",
875        "$gles1_conform_root/conform/covgl/p.c",
876        "$gles1_conform_root/conform/covgl/q.c",
877        "$gles1_conform_root/conform/covgl/r.c",
878        "$gles1_conform_root/conform/covgl/s.c",
879        "$gles1_conform_root/conform/covgl/shell.h",
880        "$gles1_conform_root/conform/covgl/t.c",
881        "$gles1_conform_root/conform/covgl/v.c",
882        "$gles1_conform_root/conform/covgl/w.c",
883      ]
884
885      sources += angle_gles1_conform_common_source
886
887      if (is_clang) {
888        cflags_c = [ "-Wno-shadow" ]
889      }
890      defines = [ "ProbeEnum=ProbeEnumANGLE" ]
891    }
892
893    angle_test("angle_gles1_covgl_tests") {
894      deps = [
895        ":angle_common_test_utils_static",
896        ":angle_gles1_covgl_no_gtest",
897      ]
898
899      include_dirs = [ "." ]
900
901      sources = [
902        "$gles1_conform_root/conform/covgl/shell.c",
903        "angle_generic_tests_main.cpp",
904        "gles1_conformance_tests/CovglTests.cpp",
905        "test_utils/ANGLETest.cpp",
906        "test_utils/ANGLETest.h",
907      ]
908
909      if (is_clang) {
910        cflags_c = [ "-Wno-shadow" ]
911      }
912
913      configs += [
914        ":angle_gles1_conform_support",
915        "${angle_root}:libANGLE_config",
916        "${angle_root}:angle_backend_config",
917      ]
918    }
919  }
920  source_set("angle_gles1_primtest_no_gtest") {
921    configs += [
922      ":angle_gles1_conform_support",
923      "$angle_root:internal_config",
924    ]
925
926    public_configs = [
927      "$angle_root/util:angle_util_config",
928      "$angle_root:gl_prototypes",
929    ]
930
931    testonly = true
932
933    public_deps = [
934      "$angle_root:angle_static",
935      "$angle_root/util:angle_util_static",
936    ]
937
938    sources = [
939      "$gles1_conform_root/conform/primtest/alias.c",
940      "$gles1_conform_root/conform/primtest/alpha.c",
941      "$gles1_conform_root/conform/primtest/blend.c",
942      "$gles1_conform_root/conform/primtest/depth.c",
943      "$gles1_conform_root/conform/primtest/dither.c",
944      "$gles1_conform_root/conform/primtest/driver.c",
945      "$gles1_conform_root/conform/primtest/driver.h",
946      "$gles1_conform_root/conform/primtest/fog.c",
947      "$gles1_conform_root/conform/primtest/hint.c",
948      "$gles1_conform_root/conform/primtest/light.c",
949      "$gles1_conform_root/conform/primtest/logic.c",
950      "$gles1_conform_root/conform/primtest/prim.c",
951      "$gles1_conform_root/conform/primtest/scissor.c",
952      "$gles1_conform_root/conform/primtest/shade.c",
953      "$gles1_conform_root/conform/primtest/shell.c",
954      "$gles1_conform_root/conform/primtest/shell.h",
955      "$gles1_conform_root/conform/primtest/stencil.c",
956      "$gles1_conform_root/conform/primtest/texture.c",
957      "$gles1_conform_root/conform/primtest/tproto.h",
958    ]
959
960    sources += angle_gles1_conform_common_source
961
962    if (is_clang) {
963      cflags_c = [ "-Wno-shadow" ]
964    }
965  }
966
967  angle_test("angle_gles1_primtest_tests") {
968    deps = [
969      ":angle_common_test_utils_static",
970      ":angle_gles1_primtest_no_gtest",
971    ]
972
973    include_dirs = [ "$gles1_conform_root/conform" ]
974
975    sources = [
976      "angle_generic_tests_main.cpp",
977      "gles1_conformance_tests/PrimtestTests.cpp",
978      "test_utils/ANGLETest.cpp",
979      "test_utils/ANGLETest.h",
980    ]
981
982    configs += [
983      ":angle_gles1_conform_support",
984      "${angle_root}:angle_backend_config",
985    ]
986  }
987  source_set("angle_gles1_covegl_no_gtest_source") {
988    configs += [
989      ":angle_gles1_conform_support",
990      "$angle_root:internal_config",
991    ]
992
993    public_configs = [
994      "$angle_root/util:angle_util_config",
995      "$angle_root:gl_prototypes",
996    ]
997
998    testonly = true
999
1000    public_deps = [
1001      "$angle_root:angle_static",
1002      "$angle_root/util:angle_util_static",
1003    ]
1004
1005    sources = [
1006      "$gles1_conform_root/conform/covegl/enum.c",
1007      "$gles1_conform_root/conform/covegl/native.h",
1008      "$gles1_conform_root/conform/covegl/test.c",
1009    ]
1010
1011    sources += angle_gles1_conform_common_source
1012
1013    if (is_clang) {
1014      cflags_c = [ "-Wno-shadow" ]
1015    }
1016
1017    if (!is_win && !is_linux && !is_chromeos) {
1018      defines = [ "NULLWS" ]
1019    }
1020  }
1021
1022  angle_test("angle_gles1_covegl_no_gtest") {
1023    deps = [ ":angle_gles1_covegl_no_gtest_source" ]
1024
1025    include_dirs = [ "$gles1_conform_root" ]
1026
1027    sources = [ "$gles1_conform_root/conform/covegl/shell.c" ]
1028
1029    if (is_win) {
1030      sources += [ "$gles1_conform_root/conform/covegl/native_w32.c" ]
1031    } else if (is_linux || is_chromeos) {
1032      sources += [ "$gles1_conform_root/conform/covegl/native.c" ]
1033    } else {
1034      sources += [ "$gles1_conform_root/conform/covegl/native_nws.c" ]
1035      defines += [ "NULLWS" ]
1036    }
1037
1038    configs += [ "${angle_root}:angle_backend_config" ]
1039
1040    defines += [ "COMMON" ]
1041
1042    if (is_clang) {
1043      cflags_c = [ "-Wno-shadow" ]
1044    }
1045
1046    if (is_win) {
1047      if (is_clang) {
1048        cflags = [ "-Wno-incompatible-pointer-types" ]
1049      } else {
1050        cflags = [ "/wd4133" ]  # 'function': incompatible types
1051      }
1052
1053      suppressed_configs += [
1054        "//build/config/win:lean_and_mean",
1055        "//build/config/win:nominmax",
1056        "//build/config/win:unicode",
1057      ]
1058    }
1059  }
1060}
1061
1062###-----------------------------------------------------
1063### dEQP tests
1064###-----------------------------------------------------
1065
1066if (build_angle_deqp_tests && !is_fuchsia) {
1067  import("deqp_support/deqp.gni")
1068  import("deqp_support/deqp_data_autogen.gni")
1069
1070  config("angle_deqp_support") {
1071    include_dirs = deqp_include_dirs
1072    if (is_win && !is_clang) {
1073      include_dirs += [ "$deqp_path/framework/platform/win32" ]
1074      cflags = [
1075        "/EHsc",  # dEQP requires exceptions
1076        "/wd4091",  # typedef ignored when no variable is declared
1077        "/wd4100",
1078        "/wd4101",  # unreferenced local variable
1079        "/wd4125",  # decimal digit terminates octal escape sequence
1080        "/wd4127",  # conditional expression constant
1081        "/wd4244",  # possible loss of data
1082        "/wd4245",  # argument signed/unsigned mismatch
1083        "/wd4297",  # function assumed not to throw an exception but does
1084        "/wd4302",  # truncation
1085        "/wd4311",  # pointer truncation
1086        "/wd4389",  # signed/unsigned mismatch
1087        "/wd4510",  # default constructor could not be generated
1088        "/wd4512",
1089        "/wd4610",  # cannot be instantiated
1090        "/wd4611",  # setjmp interaction non-portable
1091        "/wd4701",  # potentially uninit used
1092        "/wd4702",  # unreachable code
1093        "/wd4706",  # assignment within conditional expression
1094        "/wd4834",  # discarding return value of function with 'nodiscard'
1095                    # attribute
1096        "/wd4838",  # conversion requires a narrowing conversion
1097        "/wd4996",  # deprecated
1098      ]
1099    }
1100
1101    defines = [
1102      "DEQP_SUPPORT_GLES31=1",
1103      "DEQP_SUPPORT_GLES3=1",
1104      "DEQP_SUPPORT_GLES2=1",
1105      "DEQP_SUPPORT_EGL=1",
1106      "DEQP_TARGET_NAME=\"angle\"",
1107      "DEQP_GLES31_RUNTIME_LOAD=1",
1108      "DEQP_GLES3_RUNTIME_LOAD=1",
1109      "DEQP_GLES2_RUNTIME_LOAD=1",
1110      "QP_SUPPORT_PNG=1",
1111      "_HAS_EXCEPTIONS=1",
1112      "_MBCS",
1113      "ANGLE_DEQP_DATA_DIR=\"gen/vk_gl_cts_data/data\"",
1114    ]
1115
1116    if (is_android) {
1117      include_dirs += [ "$deqp_path/framework/platform/android" ]
1118
1119      _android_api = android64_ndk_api_level
1120      if (!angle_64bit_current_cpu) {
1121        _android_api = android32_ndk_api_level
1122      }
1123
1124      defines += [ "DE_ANDROID_API=" + "${_android_api}" ]
1125    }
1126
1127    if (is_clang) {
1128      # TODO(jmadill): Remove this once we fix dEQP.
1129      cflags_c = [ "-Wno-unused-local-typedef" ]
1130      cflags_cc = [
1131        "-Wno-sizeof-array-div",  # https://gitlab.khronos.org/Tracker/vk-gl-cts/issues/2127
1132        "-Wno-string-conversion",  # implicit conversion turns string literal
1133                                   # into bool
1134        "-Wno-unused-function",
1135        "-Wno-unused-local-typedef",
1136        "-Wno-unused-result",  # ignoring return value of function declared with
1137                               # 'nodiscard' attribute
1138      ]
1139      if (!is_win) {
1140        # Not supported by clang-cl
1141        cflags_cc += [
1142          "-fwrapv",  # Treat signed integer overflow as two's complement
1143                      # https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/37
1144                      # https://android.googlesource.com/platform/external/deqp/+/ae6c306e39080de59a8535cf1797b27951dcaa6c%5E%21/
1145        ]
1146      }
1147    }
1148
1149    # Ask the system headers to expose all the regular function otherwise
1150    # dEQP doesn't compile and produces warnings about implicitly defined
1151    # functions.
1152    if (is_linux || is_chromeos) {
1153      # This has to be GNU_SOURCE as on Linux dEQP uses syscall()
1154      defines += [ "_GNU_SOURCE" ]
1155    }
1156    if (is_android || is_apple) {
1157      # _XOPEN_SOURCE=600 is what is used in deqp/src/Android.mk
1158      defines += [ "_XOPEN_SOURCE=600" ]
1159    }
1160  }
1161
1162  deqp_undefine_configs = [
1163    "//build/config/compiler:chromium_code",
1164    "//build/config/compiler:no_exceptions",
1165    "//build/config/compiler:no_rtti",
1166    "${angle_root}:constructor_and_destructor_warnings",
1167    "${angle_root}:extra_warnings",
1168  ]
1169
1170  if (is_win) {
1171    deqp_undefine_configs += [
1172      "//build/config/win:lean_and_mean",
1173      "//build/config/win:nominmax",
1174      "//build/config/win:unicode",
1175    ]
1176  }
1177
1178  set_defaults("angle_deqp_source_set") {
1179    public_configs = []
1180    configs = angle_common_configs
1181    cflags = []
1182  }
1183
1184  template("angle_deqp_source_set") {
1185    angle_source_set(target_name) {
1186      testonly = true
1187      forward_variables_from(invoker, "*")
1188      suppressed_configs += deqp_undefine_configs
1189
1190      if (is_clang) {
1191        cflags += [
1192          # Suppress a spurious header warning. http://crbug.com/995046
1193          "-Wno-nonportable-include-path",
1194        ]
1195      }
1196    }
1197  }
1198
1199  config("angle_deqp_framework_debase_config") {
1200    include_dirs = [ "$deqp_path/framework/delibs/debase" ]
1201  }
1202
1203  angle_deqp_source_set("angle_deqp_framework_debase") {
1204    public_configs += [ ":angle_deqp_framework_debase_config" ]
1205    sources = deqp_framework_debase_sources
1206  }
1207
1208  config("angle_deqp_framework_decpp_config") {
1209    include_dirs = [ "$deqp_path/framework/delibs/decpp" ]
1210  }
1211
1212  angle_deqp_source_set("angle_deqp_framework_decpp") {
1213    public_configs += [
1214      ":angle_deqp_support",
1215      ":angle_deqp_framework_decpp_config",
1216      "//build/config/compiler:exceptions",
1217      "//build/config/compiler:no_chromium_code",
1218    ]
1219    if (is_clang) {
1220      cflags_cc = [
1221        # Supresses self assign warnings in SharedPtr_selfTest
1222        # Can be removed if dEQP or clang are fixed
1223        "-Wno-self-assign",
1224      ]
1225    }
1226
1227    public_deps = [
1228      ":angle_deqp_framework_debase",
1229      ":angle_deqp_framework_delibs",
1230    ]
1231    sources = deqp_framework_decpp_sources
1232  }
1233
1234  config("angle_deqp_framework_xexml_config") {
1235    include_dirs = [ "$deqp_path/framework/xexml" ]
1236  }
1237
1238  angle_deqp_source_set("angle_deqp_framework_xexml") {
1239    public_configs += [
1240      ":angle_deqp_support",
1241      ":angle_deqp_framework_decpp_config",
1242      ":angle_deqp_framework_delibs_config",
1243      "//build/config/compiler:exceptions",
1244      "//build/config/compiler:no_chromium_code",
1245    ]
1246
1247    public_deps = [
1248      ":angle_deqp_framework_debase",
1249      ":angle_deqp_framework_decpp",
1250      ":angle_deqp_framework_delibs",
1251    ]
1252    sources = deqp_framework_xexml_sources
1253  }
1254
1255  config("angle_deqp_libtester_config") {
1256    defines = [ "ANGLE_DEQP_LIBTESTER_IMPLEMENTATION" ]
1257
1258    if (is_clang) {
1259      # TODO(jmadill): Remove this once we fix dEQP.
1260      cflags_cc = [
1261        "-Wno-delete-non-virtual-dtor",
1262        "-Wno-deprecated",
1263
1264        # Supresses self assign warning in setLumSat
1265        # Can be removed if dEQP or clang are fixed
1266        "-Wno-self-assign",
1267      ]
1268    }
1269  }
1270
1271  config("angle_deqp_framework_delibs_config") {
1272    include_dirs = [
1273      "$deqp_path/framework/delibs/debase",
1274      "$deqp_path/framework/delibs/depool",
1275      "$deqp_path/framework/delibs/dethread",
1276      "$deqp_path/framework/delibs/deutil",
1277      "$deqp_path/framework/delibs/destream",
1278    ]
1279
1280    # https://github.com/KhronosGroup/VK-GL-CTS/commit/9f306457b48b3f8258ca44462003ef39b80a7515
1281    if (is_clang) {
1282      if (target_cpu == "arm") {
1283        defines = [ "DE_FENV_ACCESS_ON=" ]
1284      } else {
1285        defines = [ "DE_FENV_ACCESS_ON=_Pragma(\"STDC FENV_ACCESS ON\")" ]
1286      }
1287    } else if (is_win) {
1288      defines = [ "DE_FENV_ACCESS_ON=__pragma(fenv_access (on))" ]
1289    }
1290  }
1291
1292  angle_deqp_source_set("angle_deqp_framework_delibs") {
1293    sources = deqp_framework_delibs_sources
1294
1295    if (is_win) {
1296      sources += deqp_framework_delibs_sources_win
1297    }
1298    if (is_linux || is_chromeos || is_android || is_apple) {
1299      sources += deqp_framework_delibs_sources_unix
1300    }
1301
1302    public_configs = [
1303      ":angle_deqp_framework_delibs_config",
1304      ":angle_deqp_support",
1305    ]
1306
1307    public_deps = [ ":angle_deqp_framework_debase" ]
1308  }
1309
1310  config("angle_deqp_framework_common_config") {
1311    include_dirs = [
1312      "$deqp_path/framework/common",
1313      "$deqp_path/framework/randomshaders",
1314      "$deqp_path/framework/referencerenderer",
1315    ]
1316  }
1317
1318  angle_deqp_source_set("angle_deqp_framework_common") {
1319    sources = deqp_framework_common_sources
1320    public_configs = [ ":angle_deqp_framework_common_config" ]
1321    public_deps = [
1322      ":angle_deqp_framework_decpp",
1323      ":angle_deqp_framework_qphelper",
1324      ":angle_deqp_framework_xexml",
1325    ]
1326  }
1327
1328  config("angle_deqp_framework_opengl_config") {
1329    include_dirs = [
1330      "$deqp_path/framework/egl/wrapper",
1331      "$deqp_path/framework/opengl",
1332      "$deqp_path/framework/opengl/simplereference",
1333      "$deqp_path/framework/opengl/wrapper",
1334    ]
1335  }
1336
1337  angle_deqp_source_set("angle_deqp_framework_opengl") {
1338    sources = deqp_framework_opengl_sources
1339    public_configs = [ ":angle_deqp_framework_opengl_config" ]
1340    public_deps = [ ":angle_deqp_framework_common" ]
1341  }
1342
1343  config("angle_deqp_framework_egl_config") {
1344    include_dirs = [
1345      "$deqp_path/framework/egl",
1346      "$deqp_path/framework/egl/wrapper",
1347    ]
1348  }
1349
1350  angle_deqp_source_set("angle_deqp_framework_egl") {
1351    sources = deqp_framework_egl_sources
1352    public_configs = [ ":angle_deqp_framework_egl_config" ]
1353    public_deps = [ ":angle_deqp_framework_opengl" ]
1354  }
1355
1356  config("angle_deqp_framework_qphelper_config") {
1357    include_dirs = [ "$deqp_path/framework/qphelper" ]
1358  }
1359
1360  angle_deqp_source_set("angle_deqp_framework_qphelper") {
1361    sources = deqp_framework_qphelper_sources
1362    public_deps = [
1363      ":angle_deqp_framework_delibs",
1364      "${angle_libpng_dir}:libpng",
1365    ]
1366    public_configs = [ ":angle_deqp_framework_qphelper_config" ]
1367  }
1368
1369  config("angle_deqp_glshared_config") {
1370    include_dirs = [ "$deqp_path/modules/glshared" ]
1371  }
1372
1373  angle_deqp_source_set("angle_deqp_glshared") {
1374    sources = deqp_glshared_sources
1375    public_deps = [ ":angle_deqp_framework_opengl" ]
1376    public_configs = [ ":angle_deqp_glshared_config" ]
1377  }
1378
1379  angle_deqp_source_set("angle_deqp_framework_platform") {
1380    if (is_ios) {
1381      # shared libraries are hidden inside ios_framework_bundle, but we include headers from them
1382      check_includes = false
1383    }
1384    sources = deqp_framework_platform_sources
1385    libs = []
1386    if (is_win) {
1387      sources += [
1388        "$deqp_path/framework/platform/win32/tcuWGL.cpp",
1389        "$deqp_path/framework/platform/win32/tcuWGLContextFactory.cpp",
1390        "$deqp_path/framework/platform/win32/tcuWin32EGLNativeDisplayFactory.cpp",
1391        "$deqp_path/framework/platform/win32/tcuWin32Window.cpp",
1392      ]
1393    }
1394    if (is_linux) {
1395      sources += [
1396        "$deqp_path/framework/platform/lnx/X11/tcuLnxX11.cpp",
1397        "$deqp_path/framework/platform/lnx/X11/tcuLnxX11.hpp",
1398        "$deqp_path/framework/platform/lnx/X11/tcuLnxX11EglDisplayFactory.cpp",
1399        "$deqp_path/framework/platform/lnx/X11/tcuLnxX11EglDisplayFactory.hpp",
1400        "$deqp_path/framework/platform/lnx/tcuLnx.cpp",
1401        "$deqp_path/framework/platform/lnx/tcuLnx.hpp",
1402        "$deqp_path/framework/platform/lnx/tcuLnxEglPlatform.cpp",
1403        "$deqp_path/framework/platform/lnx/tcuLnxEglPlatform.hpp",
1404      ]
1405    }
1406    public_deps = [
1407      ":angle_deqp_framework_common",
1408      ":angle_deqp_framework_egl",
1409    ]
1410  }
1411
1412  angle_deqp_source_set("angle_deqp_libtester") {
1413    if (is_ios) {
1414      # shared libraries are hidden inside ios_framework_bundle, but we include headers from them
1415      check_includes = false
1416    }
1417    public_deps = [
1418      ":angle_deqp_framework_platform",
1419      ":angle_deqp_glshared",
1420      "$angle_root:angle_common",
1421      "$angle_root/util:angle_util",
1422    ]
1423
1424    data_deps = [ "${angle_root}:angle" ]
1425
1426    configs += [ "${angle_root}:library_name_config" ]
1427    public_configs += [
1428      ":angle_deqp_libtester_config",
1429      "${angle_root}:libANGLE_config",
1430    ]
1431    sources = deqp_libtester_sources
1432    if (is_android) {
1433      libs = [ "log" ]
1434    }
1435  }
1436
1437  set_defaults("angle_deqp_gtest") {
1438    deps = []
1439    sources = []
1440    data = []
1441    data_deps = []
1442  }
1443
1444  template("angle_deqp_gtest") {
1445    _api = target_name
1446
1447    config_name = "angle_deqp_${_api}_config"
1448    config(config_name) {
1449      defines = invoker.defines
1450    }
1451
1452    shared_library_name = "angle_deqp_lib${_api}"
1453    angle_shared_library(shared_library_name) {
1454      forward_variables_from(invoker,
1455                             [
1456                               "sources",
1457                               "deps",
1458                               "data",
1459                               "data_deps",
1460                             ])
1461
1462      testonly = true
1463
1464      deps += [
1465        ":angle_deqp_libtester",
1466        "$angle_root/util:angle_test_utils",
1467        "$angle_root/util:angle_util",
1468      ]
1469
1470      suppressed_configs += deqp_undefine_configs
1471      public_configs += [ ":$config_name" ]
1472
1473      sources += [
1474        "deqp_support/angle_deqp_libtester.h",
1475        "deqp_support/angle_deqp_libtester_main.cpp",
1476        "deqp_support/tcuANGLEPlatform.cpp",
1477        "deqp_support/tcuANGLEPlatform.h",
1478      ]
1479
1480      if ((is_mac || is_ios) && !is_component_build) {
1481        ldflags = [
1482          "-install_name",
1483          "@rpath/lib${shared_library_name}.dylib",
1484        ]
1485      }
1486    }
1487
1488    angle_test("angle_deqp_${_api}_tests") {
1489      deps = [
1490        ":${shared_library_name}",
1491        "$angle_root:angle_common",
1492        "$angle_root/util:angle_util",
1493      ]
1494
1495      # Must be included outside of the source set for the define
1496      sources = [
1497        "angle_deqp_tests_main.cpp",
1498        "deqp_support/angle_deqp_gtest.cpp",
1499      ]
1500
1501      expectations_file = "deqp_${_api}_test_expectations.txt"
1502      if (defined(invoker.expectations_file)) {
1503        expectations_file = invoker.expectations_file
1504      }
1505      data = [
1506        "deqp_support/${expectations_file}",
1507        "${invoker.mustpass_dir}/${invoker.mustpass_name}",
1508      ]
1509    }
1510  }
1511
1512  _android_mustpass = "$deqp_path/android/cts/main"
1513  _aosp_egl_mustpass = "$deqp_path/external/openglcts/data/gl_cts/data/mustpass/egl/aosp_mustpass/main"
1514  _aosp_gles_mustpass = "$deqp_path/external/openglcts/data/gl_cts/data/mustpass/gles/aosp_mustpass/main"
1515  _khronos_gl_mustpass = "$deqp_path/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main"
1516  _khronos_gles_mustpass = "$deqp_path/external/openglcts/data/gl_cts/data/mustpass/gles/khronos_mustpass/main"
1517  _khronos_gles_noctx_mustpass = "$deqp_path/external/openglcts/data/gl_cts/data/mustpass/gles/khronos_mustpass_noctx/main"
1518  _khronos_gles_single_mustpass = "$deqp_path/external/openglcts/data/gl_cts/data/mustpass/gles/khronos_mustpass_single/main"
1519
1520  angle_deqp_source_set("angle_deqp_gles2_common") {
1521    sources = deqp_gles2_sources
1522    public_deps = [
1523      ":angle_deqp_framework_egl",
1524      ":angle_deqp_glshared",
1525    ]
1526  }
1527
1528  angle_deqp_source_set("angle_deqp_gles3_common") {
1529    sources = deqp_gles3_sources
1530    public_deps = [
1531      ":angle_deqp_framework_egl",
1532      ":angle_deqp_glshared",
1533    ]
1534  }
1535
1536  angle_deqp_source_set("angle_deqp_gles31_common") {
1537    sources = deqp_gles31_sources
1538    public_deps = [
1539      ":angle_deqp_framework_egl",
1540      ":angle_deqp_glshared",
1541    ]
1542  }
1543
1544  template("angle_deqp_core_gtest") {
1545    _api = target_name
1546    forward_variables_from(invoker, [ "mustpass_suffix" ])
1547    if (mustpass_suffix != "main") {
1548      target_name = "${_api}_${mustpass_suffix}"
1549      target_name = string_replace(target_name, "-", "_")
1550    }
1551    angle_deqp_gtest(target_name) {
1552      forward_variables_from(invoker, "*")
1553
1554      mustpass_name = "${_api}-${mustpass_suffix}.txt"
1555
1556      deps += angle_deqp_data_copy_targets
1557
1558      data = []
1559      if (_api == "gles2") {
1560        data = angle_deqp_data_gles2
1561      } else if (_api == "gles3") {
1562        data = angle_deqp_data_gles3
1563      } else if (_api == "gles31") {
1564        data = angle_deqp_data_gles31
1565      } else {
1566        # Make sure we include something so that angle_deqp_libtester_main.cpp can find something.
1567        data = [ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/misc.test" ]
1568      }
1569    }
1570  }
1571
1572  angle_deqp_core_gtest("gles2") {
1573    defines = [ "ANGLE_DEQP_GLES2_TESTS" ]
1574    deps = [ ":angle_deqp_gles2_common" ]
1575    mustpass_dir = _aosp_gles_mustpass
1576    mustpass_suffix = "main"
1577  }
1578
1579  angle_deqp_core_gtest("gles3") {
1580    defines = [ "ANGLE_DEQP_GLES3_TESTS" ]
1581    deps = [ ":angle_deqp_gles3_common" ]
1582    mustpass_dir = _aosp_gles_mustpass
1583    mustpass_suffix = "main"
1584  }
1585
1586  angle_deqp_core_gtest("gles3") {
1587    defines = [ "ANGLE_DEQP_GLES3_MULTISAMPLE_TESTS" ]
1588    deps = [ ":angle_deqp_gles3_common" ]
1589    mustpass_dir = _aosp_gles_mustpass
1590    mustpass_suffix = "multisample"
1591  }
1592
1593  angle_deqp_core_gtest("gles31") {
1594    defines = [ "ANGLE_DEQP_GLES31_TESTS" ]
1595    deps = [ ":angle_deqp_gles31_common" ]
1596    mustpass_dir = _aosp_gles_mustpass
1597    mustpass_suffix = "main"
1598  }
1599
1600  angle_deqp_core_gtest("gles31") {
1601    defines = [ "ANGLE_DEQP_GLES31_MULTISAMPLE_TESTS" ]
1602    deps = [ ":angle_deqp_gles31_common" ]
1603    mustpass_dir = _aosp_gles_mustpass
1604    mustpass_suffix = "multisample"
1605  }
1606
1607  angle_deqp_core_gtest("egl") {
1608    defines = [ "ANGLE_DEQP_EGL_TESTS" ]
1609    sources = deqp_egl_sources
1610    mustpass_dir = _aosp_egl_mustpass
1611    mustpass_suffix = "main"
1612  }
1613
1614  if (is_android) {
1615    angle_deqp_core_gtest("gles3") {
1616      defines = [ "ANGLE_DEQP_GLES3_565_NO_DEPTH_NO_STENCIL_TESTS" ]
1617      deps = [ ":angle_deqp_gles3_common" ]
1618      mustpass_dir = _aosp_gles_mustpass
1619      mustpass_suffix = "565-no-depth-no-stencil"
1620    }
1621
1622    angle_deqp_core_gtest("gles31") {
1623      defines = [ "ANGLE_DEQP_GLES31_565_NO_DEPTH_NO_STENCIL_TESTS" ]
1624      deps = [ ":angle_deqp_gles31_common" ]
1625      mustpass_dir = _aosp_gles_mustpass
1626      mustpass_suffix = "565-no-depth-no-stencil"
1627    }
1628  }
1629
1630  # The CTS also includes a set of "KHR" tests that are separate from the main body of dEQP tests.
1631
1632  config("angle_deqp_khr_common_config") {
1633    include_dirs = [
1634      "$deqp_path/external/openglcts/modules/common",
1635      "$deqp_path/external/openglcts/modules/common/subgroups",
1636      "$deqp_path/external/openglcts/modules/gl",
1637      "$deqp_path/external/openglcts/modules/gles2",
1638      "$deqp_path/external/openglcts/modules/gles3",
1639      "$deqp_path/external/openglcts/modules/gles31",
1640      "$deqp_path/external/openglcts/modules/gles32",
1641      "$deqp_path/external/openglcts/modules/glesext",
1642    ]
1643    if (is_clang) {
1644      cflags = [ "-Wno-header-hygiene" ]  # using namespace directive in global
1645                                          # context in header
1646    }
1647  }
1648
1649  angle_deqp_source_set("angle_deqp_khr_common") {
1650    sources = deqp_khr_common_sources + deqp_khr_test_module_headers +
1651              deqp_khr_gl_sources + deqp_khr_gles2_sources +
1652              deqp_khr_gles3_sources + deqp_khr_gles31_sources +
1653              deqp_khr_gles32_sources + deqp_khr_glesext_sources +
1654              [ "deqp_support/glcTestPackageEntry_override.cpp" ]
1655    public_deps = [
1656      ":angle_deqp_framework_platform",
1657      ":angle_deqp_glshared",
1658      "${angle_glslang_dir}:glslang_lib_sources",
1659      "${angle_spirv_tools_dir}:spvtools_val",
1660    ]
1661    public_configs = [ ":angle_deqp_khr_common_config" ]
1662
1663    # This is a bit of a hack so one test can capture memory limits.
1664    include_dirs = [ "$deqp_path/external/vulkancts/framework/vulkan" ]
1665  }
1666
1667  template("angle_deqp_khr_gtest") {
1668    angle_deqp_gtest(target_name) {
1669      forward_variables_from(invoker, "*")
1670      deps = [ ":angle_deqp_khr_common" ]
1671      deps += angle_deqp_data_copy_targets
1672      if (api == "gles2") {
1673        # Make sure we include something so that angle_deqp_libtester_main.cpp can find something.
1674        data = [ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/misc.test" ]
1675        mustpass_dir = _khronos_gles_mustpass
1676      } else if (api == "gles3") {
1677        data = angle_deqp_external_openglcts_data_gl_cts_data_gles3
1678        mustpass_dir = _khronos_gles_mustpass
1679      } else if (api == "gles31") {
1680        data = angle_deqp_external_openglcts_data_gl_cts_data_gles31
1681        mustpass_dir = _khronos_gles_mustpass
1682      } else if (api == "gles32") {
1683        data = angle_deqp_external_openglcts_data_gl_cts_data_gles32
1684        mustpass_dir = _khronos_gles_mustpass
1685      } else if (api == "gl46") {
1686        # Use this as a placeholder, the gl46 test suite does not need data
1687        data = [ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/misc.test" ]
1688        mustpass_dir = _khronos_gl_mustpass
1689      } else {
1690        assert(false)
1691      }
1692    }
1693  }
1694
1695  angle_deqp_khr_gtest("khr_gles2") {
1696    defines = [ "ANGLE_DEQP_KHR_GLES2_TESTS" ]
1697    mustpass_name = "gles2-khr-main.txt"
1698    api = "gles2"
1699  }
1700
1701  angle_deqp_khr_gtest("khr_gles3") {
1702    defines = [ "ANGLE_DEQP_KHR_GLES3_TESTS" ]
1703    mustpass_name = "gles3-khr-main.txt"
1704    api = "gles3"
1705  }
1706
1707  angle_deqp_khr_gtest("khr_gles31") {
1708    defines = [ "ANGLE_DEQP_KHR_GLES31_TESTS" ]
1709    mustpass_name = "gles31-khr-main.txt"
1710    api = "gles31"
1711  }
1712
1713  angle_deqp_khr_gtest("khr_gles32") {
1714    defines = [ "ANGLE_DEQP_KHR_GLES32_TESTS" ]
1715    mustpass_name = "gles32-khr-main.txt"
1716    api = "gles32"
1717  }
1718
1719  # The core Desktop GL CTS is in the same category as these KHR tests.
1720  angle_deqp_khr_gtest("gl46") {
1721    defines = [ "ANGLE_DEQP_GL_TESTS" ]
1722    mustpass_name = "gl46-main.txt"
1723    api = "gl46"
1724  }
1725
1726  template("angle_deqp_khr_noctx_gtest") {
1727    angle_deqp_gtest(target_name) {
1728      forward_variables_from(invoker, "*")
1729      deps = [ ":angle_deqp_khr_common" ]
1730      deps += angle_deqp_data_copy_targets
1731      if (api == "gles2") {
1732        data = [ "$root_gen_dir/vk_gl_cts_data/data/gles2/shaders/misc.test" ]
1733        mustpass_dir = _khronos_gles_noctx_mustpass
1734      } else if (api == "gles32") {
1735        data = angle_deqp_external_openglcts_data_gl_cts_data_gles32
1736        mustpass_dir = _khronos_gles_noctx_mustpass
1737      } else {
1738        assert(false)
1739      }
1740    }
1741  }
1742
1743  angle_deqp_khr_noctx_gtest("khr_noctx_gles2") {
1744    defines = [ "ANGLE_DEQP_KHR_NOCTX_GLES2_TESTS" ]
1745    mustpass_name = "gles2-khr-noctx-main.txt"
1746    api = "gles2"
1747  }
1748
1749  angle_deqp_khr_noctx_gtest("khr_noctx_gles32") {
1750    defines = [ "ANGLE_DEQP_KHR_NOCTX_GLES32_TESTS" ]
1751    mustpass_name = "gles32-khr-noctx-main.txt"
1752    api = "gles32"
1753  }
1754
1755  template("angle_deqp_khr_single_gtest") {
1756    angle_deqp_gtest(target_name) {
1757      forward_variables_from(invoker, "*")
1758      deps = [ ":angle_deqp_khr_common" ]
1759      deps += angle_deqp_data_copy_targets
1760      if (api == "gles32") {
1761        data = angle_deqp_external_openglcts_data_gl_cts_data_gles32
1762        mustpass_dir = _khronos_gles_single_mustpass
1763      } else {
1764        assert(false)
1765      }
1766    }
1767  }
1768
1769  angle_deqp_khr_single_gtest("khr_single_gles32") {
1770    defines = [ "ANGLE_DEQP_KHR_SINGLE_GLES32_TESTS" ]
1771    mustpass_name = "gles32-khr-single.txt"
1772    api = "gles32"
1773  }
1774
1775  template("angle_deqp_rotate_gtest") {
1776    split_target = string_split(target_name, "_")
1777    _api = split_target[0]
1778    _rotate = split_target[1]
1779    angle_deqp_gtest(target_name) {
1780      forward_variables_from(invoker, "*")
1781
1782      if (_rotate == "rotate90") {
1783        mustpass_suffix = "rotate-landscape"
1784      } else if (_rotate == "rotate180") {
1785        mustpass_suffix = "rotate-reverse-portrait"
1786      } else if (_rotate == "rotate270") {
1787        mustpass_suffix = "rotate-reverse-landscape"
1788      } else {
1789        assert(false)
1790      }
1791
1792      mustpass_name = "${_api}-${mustpass_suffix}.txt"
1793
1794      deps += angle_deqp_data_copy_targets
1795
1796      data = []
1797      if (_api == "gles3") {
1798        data = angle_deqp_data_gles3
1799      } else if (_api == "gles31") {
1800        data = angle_deqp_data_gles31
1801      } else {
1802        assert(false)
1803      }
1804    }
1805  }
1806
1807  angle_deqp_rotate_gtest("gles3_rotate90") {
1808    defines = [ "ANGLE_DEQP_GLES3_ROTATE90_TESTS" ]
1809    deps = [ ":angle_deqp_gles3_common" ]
1810    mustpass_dir = _aosp_gles_mustpass
1811    expectations_file = "deqp_gles3_rotate_test_expectations.txt"
1812  }
1813
1814  angle_deqp_rotate_gtest("gles3_rotate180") {
1815    defines = [ "ANGLE_DEQP_GLES3_ROTATE180_TESTS" ]
1816    deps = [ ":angle_deqp_gles3_common" ]
1817    mustpass_dir = _aosp_gles_mustpass
1818    expectations_file = "deqp_gles3_rotate_test_expectations.txt"
1819  }
1820
1821  angle_deqp_rotate_gtest("gles3_rotate270") {
1822    defines = [ "ANGLE_DEQP_GLES3_ROTATE270_TESTS" ]
1823    deps = [ ":angle_deqp_gles3_common" ]
1824    mustpass_dir = _aosp_gles_mustpass
1825    expectations_file = "deqp_gles3_rotate_test_expectations.txt"
1826  }
1827
1828  angle_deqp_rotate_gtest("gles31_rotate90") {
1829    defines = [ "ANGLE_DEQP_GLES31_ROTATE90_TESTS" ]
1830    deps = [ ":angle_deqp_gles31_common" ]
1831    mustpass_dir = _aosp_gles_mustpass
1832    expectations_file = "deqp_gles31_rotate_test_expectations.txt"
1833  }
1834
1835  angle_deqp_rotate_gtest("gles31_rotate180") {
1836    defines = [ "ANGLE_DEQP_GLES31_ROTATE180_TESTS" ]
1837    deps = [ ":angle_deqp_gles31_common" ]
1838    mustpass_dir = _aosp_gles_mustpass
1839    expectations_file = "deqp_gles31_rotate_test_expectations.txt"
1840  }
1841
1842  angle_deqp_rotate_gtest("gles31_rotate270") {
1843    defines = [ "ANGLE_DEQP_GLES31_ROTATE270_TESTS" ]
1844    deps = [ ":angle_deqp_gles31_common" ]
1845    mustpass_dir = _aosp_gles_mustpass
1846    expectations_file = "deqp_gles31_rotate_test_expectations.txt"
1847  }
1848}
1849
1850group("angle_tests") {
1851  testonly = true
1852  deps = [
1853    ":angle_end2end_tests",
1854    ":angle_system_info_test",
1855    ":angle_unittests",
1856  ]
1857  if (build_angle_perftests) {
1858    deps += [ ":angle_perftests" ]
1859  }
1860  if (build_angle_trace_tests) {
1861    deps += [ ":angle_trace_perf_tests" ]
1862    deps += [ "capture_tests:angle_capture_tests_trace" ]
1863  }
1864  if (is_clang) {
1865    deps += [ "capture_replay_tests" ]
1866  }
1867  if (!is_fuchsia) {
1868    deps += [
1869      ":angle_white_box_perftests",
1870      ":angle_white_box_tests",
1871    ]
1872  }
1873  if (build_angle_deqp_tests && !is_fuchsia) {
1874    deps += [
1875      ":angle_deqp_egl_tests",
1876      ":angle_deqp_gl46_tests",
1877      ":angle_deqp_gles2_tests",
1878      ":angle_deqp_gles31_multisample_tests",
1879      ":angle_deqp_gles31_rotate180_tests",
1880      ":angle_deqp_gles31_rotate270_tests",
1881      ":angle_deqp_gles31_rotate90_tests",
1882      ":angle_deqp_gles31_tests",
1883      ":angle_deqp_gles3_multisample_tests",
1884      ":angle_deqp_gles3_rotate180_tests",
1885      ":angle_deqp_gles3_rotate270_tests",
1886      ":angle_deqp_gles3_rotate90_tests",
1887      ":angle_deqp_gles3_tests",
1888      ":angle_deqp_khr_gles2_tests",
1889      ":angle_deqp_khr_gles31_tests",
1890      ":angle_deqp_khr_gles32_tests",
1891      ":angle_deqp_khr_gles3_tests",
1892      ":angle_deqp_khr_noctx_gles2_tests",
1893      ":angle_deqp_khr_noctx_gles32_tests",
1894      ":angle_deqp_khr_single_gles32_tests",
1895    ]
1896
1897    if (is_android) {
1898      deps += [
1899        ":angle_deqp_gles31_565_no_depth_no_stencil_tests",
1900        ":angle_deqp_gles3_565_no_depth_no_stencil_tests",
1901      ]
1902    }
1903  }
1904  if (build_angle_gles1_conform_tests) {
1905    deps += [
1906      ":angle_gles1_conformance_tests",
1907      ":angle_gles1_covegl_no_gtest",
1908      ":angle_gles1_primtest_tests",
1909    ]
1910    if (!is_win && !is_apple) {
1911      deps += [ ":angle_gles1_covgl_tests" ]
1912    }
1913  }
1914}
1915