| # Copyright 2015 The ANGLE Project Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/config/chromecast_build.gni") |
| import("//testing/test.gni") |
| import("../../gni/angle.gni") |
| import("angle_unittests.gni") |
| |
| declare_args() { |
| # Don't build dEQP by default. |
| build_angle_deqp_tests = false |
| build_angle_gles1_conform_tests = false |
| } |
| |
| if (!build_with_chromium) { |
| group("all") { |
| testonly = true |
| deps = [ |
| "//src/tests:angle_end2end_tests", |
| "//src/tests:angle_perftests", |
| "//src/tests:angle_unittests", |
| ] |
| if (!is_fuchsia) { |
| deps += [ |
| "//src/tests:angle_white_box_perftests", |
| "//src/tests:angle_white_box_tests", |
| ] |
| } |
| if (build_angle_deqp_tests && !is_fuchsia) { |
| deps += [ |
| "//src/tests:angle_deqp_egl_no_gtest", |
| "//src/tests:angle_deqp_egl_tests", |
| "//src/tests:angle_deqp_gles2_no_gtest", |
| "//src/tests:angle_deqp_gles2_tests", |
| "//src/tests:angle_deqp_gles31_no_gtest", |
| "//src/tests:angle_deqp_gles31_tests", |
| "//src/tests:angle_deqp_gles3_no_gtest", |
| "//src/tests:angle_deqp_gles3_tests", |
| ] |
| } |
| if (build_angle_gles1_conform_tests) { |
| deps += [ "//src/tests:angle_gles1_conformance_tests" ] |
| } |
| } |
| } |
| |
| angle_executable("angle_unittests_helper") { |
| sources = angle_unittests_helper_sources |
| |
| deps = [ |
| "${angle_root}:angle_common", |
| ] |
| } |
| |
| test_expectations_sources = [ |
| "test_expectations/GPUTestConfig.cpp", |
| "test_expectations/GPUTestConfig.h", |
| "test_expectations/GPUTestExpectationsParser.cpp", |
| "test_expectations/GPUTestExpectationsParser.h", |
| ] |
| if (is_mac) { |
| test_expectations_sources_mac = [ |
| "test_expectations/GPUTestConfig_mac.mm", |
| "test_expectations/GPUTestConfig_mac.h", |
| ] |
| } |
| |
| config("angle_test_expectations_config") { |
| include_dirs = [ "${angle_root}:angle_common" ] |
| } |
| |
| angle_static_library("angle_test_expectations") { |
| public_configs += [ ":angle_test_expectations_config" ] |
| public_deps = [ |
| "${angle_root}:angle_common", |
| "${angle_root}:angle_gpu_info_util", |
| "${angle_root}:angle_util", |
| ] |
| sources = test_expectations_sources |
| if (is_mac) { |
| sources += test_expectations_sources_mac |
| libs = [ "Cocoa.framework" ] |
| } |
| } |
| |
| angle_test("angle_unittests") { |
| sources = angle_unittests_sources |
| main = "angle_unittest_main" |
| |
| if (angle_enable_hlsl) { |
| sources += angle_unittests_hlsl_sources |
| defines = [ "ANGLE_ENABLE_HLSL" ] |
| } |
| |
| deps = [ |
| ":angle_test_expectations", |
| "${angle_root}:libANGLE", |
| "${angle_root}:libfeature_support", |
| "${angle_root}:preprocessor", |
| "${angle_root}:translator", |
| ] |
| if (!is_android && !is_fuchsia) { |
| # SystemUtils.RunApp, the only unittest using a helper binary, is not supported on these |
| # platforms yet. |
| data_deps = [ |
| ":angle_unittests_helper", |
| ] |
| } |
| } |
| |
| if (is_win || is_linux || is_mac || is_android || is_fuchsia) { |
| import("angle_end2end_tests.gni") |
| |
| angle_test("angle_end2end_tests") { |
| include_dirs = [ "." ] |
| |
| sources = angle_end2end_tests_sources |
| main = "angle_end2end_tests_main" |
| libs = [] |
| |
| if (is_mac) { |
| sources += angle_end2end_tests_mac_sources |
| libs += [ |
| "CoreFoundation.framework", |
| "IOSurface.framework", |
| ] |
| } |
| if (is_win) { |
| sources += angle_end2end_tests_win_sources |
| } |
| if (use_x11) { |
| sources += angle_end2end_tests_x11_sources |
| } |
| if (angle_enable_vulkan) { |
| sources += angle_end2end_tests_vulkan_sources |
| } |
| |
| configs += [ |
| "${angle_root}:libANGLE_config", |
| "${angle_root}:library_name_config", |
| ] |
| |
| deps = [ |
| ":angle_test_expectations", |
| "${angle_root}:angle_gpu_info_util", |
| "${angle_root}:angle_image_util", |
| "${angle_root}:angle_util", |
| "${angle_root}:angle_util_loader_headers", |
| ] |
| |
| data_deps = [ |
| "${angle_root}:libEGL", |
| "${angle_root}:libGLESv1_CM", |
| "${angle_root}:libGLESv2", |
| ] |
| |
| if (is_android) { |
| use_native_activity = true |
| } |
| if (angle_enable_vulkan) { |
| deps += [ "${angle_root}/src/libANGLE/renderer/vulkan:angle_vulkan" ] |
| } |
| } |
| } |
| |
| if (is_win || is_linux || is_mac || is_android) { |
| import("angle_white_box_tests.gni") |
| |
| angle_test("angle_white_box_tests") { |
| include_dirs = [ "." ] |
| sources = angle_white_box_tests_sources |
| main = "angle_end2end_tests_main" |
| |
| if (is_win) { |
| sources += angle_white_box_tests_win_sources |
| } |
| |
| if (angle_enable_vulkan) { |
| sources += angle_white_box_tests_vulkan_sources |
| } |
| |
| configs += [ |
| "${angle_root}:libANGLE_config", |
| "${angle_root}:library_name_config", |
| ] |
| |
| deps = [ |
| "${angle_root}:angle_util_static", |
| "${angle_root}:libANGLE", |
| "${angle_root}:libEGL_static", |
| "${angle_root}:libGLESv2_static", |
| "${angle_root}:preprocessor", |
| "${angle_root}:translator", |
| ] |
| |
| if (is_android) { |
| use_native_activity = true |
| } |
| } |
| } |
| |
| if (is_win || is_linux || is_android || is_mac) { |
| import("angle_perftests.gni") |
| |
| # This test suite is for perf tests that use ANGLE's internals in some direct way. |
| angle_test("angle_white_box_perftests") { |
| include_dirs = [ "." ] |
| sources = angle_white_box_perf_tests_sources |
| main = "angle_perftests_main" |
| |
| deps = [ |
| "${angle_jsoncpp_dir}:jsoncpp", |
| "${angle_root}:angle_util_static", |
| "${angle_root}:libANGLE", |
| "${angle_root}:libEGL_static", |
| "${angle_root}:libGLESv2_static", |
| ] |
| |
| if (is_win) { |
| sources += angle_white_box_perf_tests_win_sources |
| } |
| |
| if (angle_enable_vulkan) { |
| sources += angle_white_box_perf_tests_vulkan_sources |
| deps += [ "${angle_glslang_dir}:glslang_sources" ] |
| } |
| |
| configs += [ |
| "${angle_jsoncpp_dir}:jsoncpp_config", |
| "${angle_root}:libANGLE_config", |
| "${angle_root}:library_name_config", |
| ] |
| |
| if (is_android) { |
| use_native_activity = true |
| } |
| } |
| } |
| |
| if (is_win || is_linux || is_android || is_mac || is_fuchsia) { |
| import("angle_perftests.gni") |
| |
| # This test suite is designed to run against a generic GL implementation. |
| angle_test("angle_perftests") { |
| include_dirs = [ "." ] |
| sources = angle_perf_tests_sources |
| main = "angle_perftests_main" |
| |
| deps = [ |
| "${angle_jsoncpp_dir}:jsoncpp", |
| "${angle_root}:angle_common", |
| "${angle_root}:angle_gpu_info_util", |
| "${angle_root}:angle_system_utils", |
| "${angle_root}:angle_util", |
| "${angle_root}:angle_util_loader_headers", |
| ] |
| |
| data_deps = [ |
| "${angle_root}:libEGL", |
| "${angle_root}:libGLESv2", |
| ] |
| |
| configs += [ |
| "${angle_jsoncpp_dir}:jsoncpp_config", |
| "${angle_root}:libANGLE_config", |
| "${angle_root}:library_name_config", |
| ] |
| |
| if (is_android) { |
| use_native_activity = true |
| } |
| |
| if (is_win || is_linux) { |
| data_deps += [ "${angle_root}/third_party/glmark2:glmark2_angle" ] |
| } |
| if (is_win && target_cpu != "arm64") { |
| data_deps += [ "${angle_root}/third_party/glmark2:glmark2_wgl" ] |
| } |
| if (is_linux) { |
| data_deps += [ "${angle_root}/third_party/glmark2:glmark2_glx" ] |
| } |
| } |
| } |
| |
| ###----------------------------------------------------- |
| ### ES 1 conformance tests |
| ###----------------------------------------------------- |
| |
| if (build_angle_gles1_conform_tests) { |
| gles1_conform_root = "$angle_root/third_party/gles1_conform" |
| |
| config("angle_gles1_conform_support") { |
| include_dirs = [ |
| "$gles1_conform_root", |
| "$gles1_conform_root/conform/conform", |
| "$gles1_conform_root/conform/conformshell", |
| "$gles1_conform_root/ctk", |
| "$gles1_conform_root/fixed", |
| "$gles1_conform_root/include", |
| "$gles1_conform_root/platform", |
| ] |
| |
| defines = [ |
| "COMMON", |
| "CONFORM_ALTERNATE_MAIN", |
| "NULLWS", |
| ] |
| |
| # This is used by the tests to typedef uint32_t. For some reason only needed on mac. |
| if (is_mac) { |
| defines += [ "__linux" ] |
| } |
| |
| cflags = [] |
| if (is_clang) { |
| # Remove when crbug.com/428099 is resolved. |
| cflags += [ |
| "-Wno-implicit-function-declaration", |
| "-Wno-int-to-pointer-cast", |
| "-Wno-self-assign", |
| "-Wno-sign-compare", |
| "-Wno-unused-const-variable", |
| "-Wno-unused-result", |
| "-Wno-unused-variable", |
| |
| # Upstream tests do null pointer arithmetic, so disable those warnings. |
| "-Wno-null-pointer-arithmetic", |
| ] |
| } else { |
| cflags += [ "/wd4101" ] # unreferenced local variable |
| } |
| } |
| |
| # This source set is a bit special so we don't use angle_source_set. |
| source_set("angle_gles1_conformance_no_gtest") { |
| configs += [ |
| ":angle_gles1_conform_support", |
| "$angle_root:internal_config", |
| ] |
| |
| public_configs = [ |
| "$angle_root:angle_static", |
| "$angle_root:angle_util_config", |
| "$angle_root:gl_prototypes", |
| ] |
| |
| testonly = true |
| |
| public_deps = [ |
| "$angle_root:angle_common", |
| "$angle_root:angle_util_static", |
| "$angle_root:libEGL_static", |
| "$angle_root:libGLESv1_CM_static", |
| "$angle_root:libGLESv2_static", |
| "$angle_root:preprocessor", |
| "$angle_root:translator", |
| ] |
| |
| sources = [ |
| "$gles1_conform_root/conform/conform/apfunc.c", |
| "$gles1_conform_root/conform/conform/appl.c", |
| "$gles1_conform_root/conform/conform/bclear.c", |
| "$gles1_conform_root/conform/conform/bcolor.c", |
| "$gles1_conform_root/conform/conform/bcorner.c", |
| "$gles1_conform_root/conform/conform/blend.c", |
| "$gles1_conform_root/conform/conform/bufobj.c", |
| "$gles1_conform_root/conform/conform/clip.c", |
| "$gles1_conform_root/conform/conform/colramp.c", |
| "$gles1_conform_root/conform/conform/copytex.c", |
| "$gles1_conform_root/conform/conform/dither.c", |
| "$gles1_conform_root/conform/conform/divzero.c", |
| "$gles1_conform_root/conform/conform/drawtex.c", |
| "$gles1_conform_root/conform/conform/fogexp.c", |
| "$gles1_conform_root/conform/conform/foglin.c", |
| "$gles1_conform_root/conform/conform/gets.c", |
| "$gles1_conform_root/conform/conform/l_ac.c", |
| "$gles1_conform_root/conform/conform/l_al.c", |
| "$gles1_conform_root/conform/conform/l_am.c", |
| "$gles1_conform_root/conform/conform/l_ap.c", |
| "$gles1_conform_root/conform/conform/l_as.c", |
| "$gles1_conform_root/conform/conform/l_dl.c", |
| "$gles1_conform_root/conform/conform/l_dm.c", |
| "$gles1_conform_root/conform/conform/l_dmn.c", |
| "$gles1_conform_root/conform/conform/l_dmp.c", |
| "$gles1_conform_root/conform/conform/l_em.c", |
| "$gles1_conform_root/conform/conform/l_se.c", |
| "$gles1_conform_root/conform/conform/l_sed.c", |
| "$gles1_conform_root/conform/conform/l_sen.c", |
| "$gles1_conform_root/conform/conform/l_sep.c", |
| "$gles1_conform_root/conform/conform/l_sl.c", |
| "$gles1_conform_root/conform/conform/l_sm.c", |
| "$gles1_conform_root/conform/conform/l_sn.c", |
| "$gles1_conform_root/conform/conform/l_sp.c", |
| "$gles1_conform_root/conform/conform/lineaa.c", |
| "$gles1_conform_root/conform/conform/linehv.c", |
| "$gles1_conform_root/conform/conform/linerast.c", |
| "$gles1_conform_root/conform/conform/logicop.c", |
| "$gles1_conform_root/conform/conform/mask.c", |
| "$gles1_conform_root/conform/conform/mget.c", |
| "$gles1_conform_root/conform/conform/mipgen.c", |
| "$gles1_conform_root/conform/conform/miplevels.c", |
| "$gles1_conform_root/conform/conform/miplin.c", |
| "$gles1_conform_root/conform/conform/mipsel.c", |
| "$gles1_conform_root/conform/conform/mpalette.c", |
| "$gles1_conform_root/conform/conform/mquery.c", |
| "$gles1_conform_root/conform/conform/mstack.c", |
| "$gles1_conform_root/conform/conform/multitex.c", |
| "$gles1_conform_root/conform/conform/mustpass.c", |
| "$gles1_conform_root/conform/conform/packpix.c", |
| "$gles1_conform_root/conform/conform/pntaa.c", |
| "$gles1_conform_root/conform/conform/pntrast.c", |
| "$gles1_conform_root/conform/conform/pntsprt.c", |
| "$gles1_conform_root/conform/conform/pntszary.c", |
| "$gles1_conform_root/conform/conform/polycull.c", |
| "$gles1_conform_root/conform/conform/readfmt.c", |
| "$gles1_conform_root/conform/conform/rescalen.c", |
| "$gles1_conform_root/conform/conform/scissor.c", |
| "$gles1_conform_root/conform/conform/spclear.c", |
| "$gles1_conform_root/conform/conform/spcorner.c", |
| "$gles1_conform_root/conform/conform/spfunc.c", |
| "$gles1_conform_root/conform/conform/spop.c", |
| "$gles1_conform_root/conform/conform/tests.c", |
| "$gles1_conform_root/conform/conform/texcombine.c", |
| "$gles1_conform_root/conform/conform/texdecal.c", |
| "$gles1_conform_root/conform/conform/texedge.c", |
| "$gles1_conform_root/conform/conform/texpalet.c", |
| "$gles1_conform_root/conform/conform/trirast.c", |
| "$gles1_conform_root/conform/conform/tritile.c", |
| "$gles1_conform_root/conform/conform/userclip.c", |
| "$gles1_conform_root/conform/conform/vorder.c", |
| "$gles1_conform_root/conform/conform/vpclamp.c", |
| "$gles1_conform_root/conform/conform/xform.c", |
| "$gles1_conform_root/conform/conform/xformmix.c", |
| "$gles1_conform_root/conform/conform/xformn.c", |
| "$gles1_conform_root/conform/conform/xformvp.c", |
| "$gles1_conform_root/conform/conform/xformw.c", |
| "$gles1_conform_root/conform/conform/zbclear.c", |
| "$gles1_conform_root/conform/conform/zbfunc.c", |
| "$gles1_conform_root/conform/conformshell/conform.h", |
| "$gles1_conform_root/conform/conformshell/driver.c", |
| "$gles1_conform_root/conform/conformshell/driver.h", |
| "$gles1_conform_root/conform/conformshell/path.c", |
| "$gles1_conform_root/conform/conformshell/path.h", |
| "$gles1_conform_root/conform/conformshell/pathdata.c", |
| "$gles1_conform_root/conform/conformshell/pathdata.h", |
| "$gles1_conform_root/conform/conformshell/paths.c", |
| "$gles1_conform_root/conform/conformshell/shell.c", |
| "$gles1_conform_root/conform/conformshell/util.c", |
| "$gles1_conform_root/conform/conformshell/util.h", |
| "$gles1_conform_root/conform/conformshell/utilg.c", |
| "$gles1_conform_root/conform/conformshell/utilg.h", |
| "$gles1_conform_root/conform/conformshell/utilm.c", |
| "$gles1_conform_root/conform/conformshell/utilm.h", |
| "$gles1_conform_root/conform/conformshell/utilp.c", |
| "$gles1_conform_root/conform/conformshell/utilp.h", |
| "$gles1_conform_root/conform/conformshell/utilru.c", |
| "$gles1_conform_root/conform/conformshell/utilru.h", |
| "$gles1_conform_root/conform/conformshell/utils.c", |
| "$gles1_conform_root/conform/conformshell/utils.h", |
| "$gles1_conform_root/conform/conformshell/utilt.c", |
| "$gles1_conform_root/conform/conformshell/utilt.h", |
| "$gles1_conform_root/ctk/ctk.h", |
| "$gles1_conform_root/ctk/ctkn.c", |
| "$gles1_conform_root/ctk/glext.c", |
| "$gles1_conform_root/fixed/fixed.c", |
| "$gles1_conform_root/fixed/float64.c", |
| "$gles1_conform_root/fixed/int32.c", |
| "$gles1_conform_root/fixed/int64.c", |
| "$gles1_conform_root/platform/gl_fixed_point.h", |
| "$gles1_conform_root/platform/gl_single_precision.h", |
| "$gles1_conform_root/platform/math_fixed.h", |
| "$gles1_conform_root/platform/math_float.h", |
| "$gles1_conform_root/platform/platform.h", |
| "$gles1_conform_root/platform/platform_gl.h", |
| "$gles1_conform_root/platform/platform_random.h", |
| "$gles1_conform_root/platform/platform_stdlib.h", |
| "$gles1_conform_root/platform/platform_types.h", |
| "$gles1_conform_root/platform/printf_fixed.h", |
| "$gles1_conform_root/platform/printf_float.h", |
| "$gles1_conform_root/platform/random.c", |
| "$gles1_conform_root/platform/stdlib_ansi.h", |
| ] |
| } |
| |
| angle_test("angle_gles1_conformance_tests") { |
| deps = [ |
| ":angle_gles1_conformance_no_gtest", |
| ] |
| |
| include_dirs = [ "." ] |
| |
| sources = [ |
| "gles1_conformance_tests/ConformanceTests.cpp", |
| "test_utils/ANGLETest.cpp", |
| "test_utils/ANGLETest.h", |
| "test_utils/angle_test_configs.cpp", |
| "test_utils/angle_test_configs.h", |
| "test_utils/angle_test_instantiate.cpp", |
| "test_utils/angle_test_instantiate.h", |
| "test_utils/gl_raii.h", |
| ] |
| main = "angle_end2end_tests_main" |
| |
| configs += [ |
| "${angle_root}:libANGLE_config", |
| "${angle_root}:library_name_config", |
| "${angle_root}:angle_backend_config", |
| ] |
| |
| if (is_android) { |
| use_native_activity = true |
| } |
| } |
| } |
| |
| ###----------------------------------------------------- |
| ### dEQP tests |
| ###----------------------------------------------------- |
| |
| if (build_angle_deqp_tests && !is_fuchsia) { |
| import("deqp.gni") |
| |
| config("angle_deqp_support") { |
| include_dirs = deqp_include_dirs |
| if (is_win && !is_clang) { |
| include_dirs += [ "$deqp_path/framework/platform/win32" ] |
| cflags = [ |
| "/EHsc", # dEQP requires exceptions |
| "/wd4091", # typedef ignored when no variable is declared |
| "/wd4100", |
| "/wd4101", # unreferenced local variable |
| "/wd4125", # decimal digit terminates octal escape sequence |
| "/wd4127", # conditional expression constant |
| "/wd4244", # possible loss of data |
| "/wd4245", # argument signed/unsigned mismatch |
| "/wd4297", # function assumed not to throw an exception but does |
| "/wd4302", # truncation |
| "/wd4311", # pointer truncation |
| "/wd4389", # signed/unsigned mismatch |
| "/wd4510", # default constructor could not be generated |
| "/wd4512", |
| "/wd4610", # cannot be instantiated |
| "/wd4611", # setjmp interaction non-portable |
| "/wd4701", # potentially uninit used |
| "/wd4702", # unreachable code |
| "/wd4706", # assignment within conditional expression |
| "/wd4838", # conversion requires a narrowing conversion |
| "/wd4996", # deprecated |
| ] |
| } |
| if (is_android) { |
| include_dirs += [ "$deqp_path/framework/platform/android" ] |
| } |
| defines = [ |
| "DEQP_SUPPORT_GLES31=1", |
| "DEQP_SUPPORT_GLES3=1", |
| "DEQP_SUPPORT_GLES2=1", |
| "DEQP_SUPPORT_EGL=1", |
| "DEQP_TARGET_NAME=\"angle\"", |
| "DEQP_GLES31_RUNTIME_LOAD=1", |
| "DEQP_GLES3_RUNTIME_LOAD=1", |
| "DEQP_GLES2_RUNTIME_LOAD=1", |
| "QP_SUPPORT_PNG=1", |
| "_HAS_EXCEPTIONS=1", |
| "_MBCS", |
| ] |
| |
| if (is_clang) { |
| # TODO(jmadill): Remove this once we fix dEQP. |
| cflags_c = [ "-Wno-unused-local-typedef" ] |
| cflags_cc = [ |
| "-Wno-string-conversion", # implicit conversion turns string literal into bool |
| "-Wno-unused-local-typedef", |
| "-Wno-unused-result", # ignoring return value of function declared with 'nodiscard' attribute |
| ] |
| } |
| |
| # Ask the system headers to expose all the regular function otherwise |
| # dEQP doesn't compile and produces warnings about implicitly defined |
| # functions. |
| if (is_linux) { |
| # This has to be GNU_SOURCE as on Linux dEQP uses syscall() |
| defines += [ "_GNU_SOURCE" ] |
| } |
| if (is_android || is_mac) { |
| # _XOPEN_SOURCE=600 is what is used in deqp/src/Android.mk |
| defines += [ "_XOPEN_SOURCE=600" ] |
| } |
| } |
| |
| deqp_undefine_configs = [ |
| "//build/config/compiler:chromium_code", |
| "//build/config/compiler:no_exceptions", |
| "//build/config/compiler:no_rtti", |
| "${angle_root}:extra_warnings", |
| ] |
| |
| if (is_win) { |
| deqp_undefine_configs += [ |
| "//build/config/win:lean_and_mean", |
| "//build/config/win:nominmax", |
| "//build/config/win:unicode", |
| ] |
| } |
| |
| set_defaults("angle_deqp_source_set") { |
| public_configs = [] |
| configs = angle_common_configs |
| cflags = [] |
| } |
| |
| template("angle_deqp_source_set") { |
| angle_source_set(target_name) { |
| forward_variables_from(invoker, "*") |
| suppressed_configs += deqp_undefine_configs |
| |
| if (is_clang) { |
| cflags += [ |
| # Suppress a spurious header warning. http://crbug.com/995046 |
| "-Wno-nonportable-include-path", |
| ] |
| } |
| } |
| } |
| |
| config("angle_deqp_framework_debase_config") { |
| include_dirs = [ "$deqp_path/framework/delibs/debase" ] |
| } |
| |
| angle_deqp_source_set("angle_deqp_framework_debase") { |
| public_configs += [ ":angle_deqp_framework_debase_config" ] |
| sources = deqp_framework_debase_sources |
| } |
| |
| config("angle_deqp_framework_decpp_config") { |
| include_dirs = [ "$deqp_path/framework/delibs/decpp" ] |
| } |
| |
| angle_deqp_source_set("angle_deqp_framework_decpp") { |
| public_configs += [ |
| ":angle_deqp_support", |
| ":angle_deqp_framework_decpp_config", |
| "//build/config/compiler:exceptions", |
| "//build/config/compiler:no_chromium_code", |
| ] |
| if (is_clang) { |
| cflags_cc = [ |
| # Supresses self assign warnings in SharedPtr_selfTest |
| # Can be removed if dEQP or clang are fixed |
| "-Wno-self-assign", |
| ] |
| } |
| |
| public_deps = [ |
| ":angle_deqp_framework_debase", |
| ":angle_deqp_framework_delibs", |
| ] |
| sources = deqp_framework_decpp_sources |
| } |
| |
| config("angle_deqp_libtester_config") { |
| defines = [ "ANGLE_DEQP_LIBTESTER_IMPLEMENTATION" ] |
| |
| if (is_clang) { |
| # TODO(jmadill): Remove this once we fix dEQP. |
| cflags_cc = [ |
| "-Wno-delete-non-virtual-dtor", |
| "-Wno-deprecated", |
| |
| # Supresses self assign warning in setLumSat |
| # Can be removed if dEQP or clang are fixed |
| "-Wno-self-assign", |
| ] |
| } |
| } |
| |
| config("angle_deqp_framework_delibs_config") { |
| include_dirs = [ |
| "$deqp_path/framework/delibs/debase", |
| "$deqp_path/framework/delibs/depool", |
| "$deqp_path/framework/delibs/dethread", |
| "$deqp_path/framework/delibs/deutil", |
| "$deqp_path/framework/delibs/destream", |
| ] |
| } |
| |
| angle_deqp_source_set("angle_deqp_framework_delibs") { |
| sources = deqp_framework_delibs_sources |
| |
| if (is_win) { |
| sources += deqp_framework_delibs_sources_win |
| } |
| if (is_linux || is_android || is_mac) { |
| sources += deqp_framework_delibs_sources_unix |
| } |
| |
| public_configs = [ |
| ":angle_deqp_framework_delibs_config", |
| ":angle_deqp_support", |
| ] |
| |
| public_deps = [ |
| ":angle_deqp_framework_debase", |
| ] |
| } |
| |
| config("angle_deqp_framework_common_config") { |
| include_dirs = [ |
| "$deqp_path/framework/common", |
| "$deqp_path/framework/randomshaders", |
| "$deqp_path/framework/referencerenderer", |
| ] |
| } |
| |
| angle_deqp_source_set("angle_deqp_framework_common") { |
| sources = deqp_framework_common_sources |
| public_configs = [ ":angle_deqp_framework_common_config" ] |
| public_deps = [ |
| ":angle_deqp_framework_decpp", |
| ":angle_deqp_framework_qphelper", |
| ] |
| } |
| |
| config("angle_deqp_framework_opengl_config") { |
| include_dirs = [ |
| "$deqp_path/framework/opengl", |
| "$deqp_path/framework/opengl/simplereference", |
| "$deqp_path/framework/opengl/wrapper", |
| ] |
| } |
| |
| angle_deqp_source_set("angle_deqp_framework_opengl") { |
| sources = deqp_framework_opengl_sources |
| public_configs = [ ":angle_deqp_framework_opengl_config" ] |
| public_deps = [ |
| ":angle_deqp_framework_common", |
| ] |
| } |
| |
| config("angle_deqp_framework_egl_config") { |
| include_dirs = [ |
| "$deqp_path/framework/egl", |
| "$deqp_path/framework/egl/wrapper", |
| ] |
| } |
| |
| angle_deqp_source_set("angle_deqp_framework_egl") { |
| sources = deqp_framework_egl_sources |
| public_configs = [ ":angle_deqp_framework_egl_config" ] |
| public_deps = [ |
| ":angle_deqp_framework_opengl", |
| ] |
| } |
| |
| config("angle_deqp_framework_qphelper_config") { |
| include_dirs = [ "$deqp_path/framework/qphelper" ] |
| } |
| |
| angle_deqp_source_set("angle_deqp_framework_qphelper") { |
| sources = deqp_framework_qphelper_sources |
| public_deps = [ |
| ":angle_deqp_framework_delibs", |
| "${angle_libpng_dir}:libpng", |
| ] |
| public_configs = [ ":angle_deqp_framework_qphelper_config" ] |
| } |
| |
| config("angle_deqp_glshared_config") { |
| include_dirs = [ "$deqp_path/modules/glshared" ] |
| } |
| |
| angle_deqp_source_set("angle_deqp_glshared") { |
| sources = deqp_glshared_sources |
| public_deps = [ |
| ":angle_deqp_framework_opengl", |
| ] |
| public_configs = [ ":angle_deqp_glshared_config" ] |
| } |
| |
| angle_deqp_source_set("angle_deqp_libtester") { |
| public_deps = [ |
| ":angle_deqp_framework_common", |
| ":angle_deqp_framework_egl", |
| ":angle_deqp_glshared", |
| "${angle_root}:angle_common", |
| "${angle_root}:angle_util", |
| "${angle_root}:libEGL", |
| "${angle_root}:libGLESv2", |
| ] |
| |
| configs += [ "${angle_root}:library_name_config" ] |
| public_configs += [ ":angle_deqp_libtester_config" ] |
| sources = deqp_libtester_sources |
| if (is_android) { |
| sources += deqp_libtester_sources_android |
| libs = [ "log" ] |
| } |
| } |
| |
| set_defaults("angle_deqp_gtest") { |
| deps = [] |
| sources = [] |
| data = [] |
| data_deps = [] |
| } |
| |
| template("angle_deqp_gtest") { |
| _api = target_name |
| |
| config_name = "angle_deqp_${_api}_config" |
| config(config_name) { |
| defines = invoker.defines |
| } |
| |
| shared_library_name = "angle_deqp_lib${_api}" |
| angle_shared_library(shared_library_name) { |
| forward_variables_from(invoker, |
| [ |
| "sources", |
| "deps", |
| "data", |
| "data_deps", |
| ]) |
| |
| deps += [ |
| ":angle_deqp_libtester", |
| "$angle_root:angle_util", |
| ] |
| |
| suppressed_configs += deqp_undefine_configs |
| public_configs += [ ":$config_name" ] |
| |
| sources += [ |
| "deqp_support/angle_deqp_libtester.h", |
| "deqp_support/angle_deqp_libtester_main.cpp", |
| "deqp_support/tcuANGLEPlatform.cpp", |
| "deqp_support/tcuANGLEPlatform.h", |
| ] |
| } |
| |
| if (!build_with_chromium) { |
| angle_executable("angle_deqp_${_api}_no_gtest") { |
| sources = [ |
| "deqp_support/angle_deqp_tests_main.cpp", |
| ] |
| deps = [ |
| ":$shared_library_name", |
| ] |
| } |
| } |
| |
| angle_test("angle_deqp_${_api}_tests") { |
| deps = [ |
| ":${shared_library_name}", |
| ":angle_test_expectations", |
| "${angle_root}:angle_common", |
| "${angle_root}:angle_util", |
| ] |
| |
| # Must be included outside of the source set for the define |
| sources = [ |
| "deqp_support/angle_deqp_gtest.cpp", |
| ] |
| main = "angle_deqp_tests_main" |
| |
| data = [ |
| "deqp_support/deqp_${_api}_test_expectations.txt", |
| "${invoker.mustpass_dir}/${invoker.mustpass_name}", |
| ] |
| |
| if (is_android) { |
| use_native_activity = true |
| } |
| } |
| } |
| |
| _android_mustpass = "$deqp_path/android/cts/master" |
| _aosp_mustpass = |
| "$deqp_path/external/openglcts/data/mustpass/gles/aosp_mustpass/master" |
| _khronos_mustpass = |
| "$deqp_path/external/openglcts/data/mustpass/gles/khronos_mustpass/master" |
| |
| template("angle_deqp_core_gtest") { |
| _api = target_name |
| angle_deqp_gtest(target_name) { |
| forward_variables_from(invoker, "*") |
| |
| defines += [ "ANGLE_DEQP_DATA_DIR=\"data\"" ] |
| |
| mustpass_name = "${_api}-master.txt" |
| data = [ |
| "$deqp_path/data/", |
| ] |
| } |
| } |
| |
| angle_deqp_core_gtest("gles2") { |
| defines = [ "ANGLE_DEQP_GLES2_TESTS" ] |
| sources = deqp_gles2_sources |
| mustpass_dir = _aosp_mustpass |
| } |
| |
| angle_deqp_core_gtest("gles3") { |
| defines = [ "ANGLE_DEQP_GLES3_TESTS" ] |
| sources = deqp_gles3_sources |
| mustpass_dir = _aosp_mustpass |
| } |
| |
| angle_deqp_core_gtest("gles31") { |
| defines = [ "ANGLE_DEQP_GLES31_TESTS" ] |
| sources = deqp_gles31_sources |
| mustpass_dir = _aosp_mustpass |
| } |
| |
| angle_deqp_core_gtest("egl") { |
| defines = [ "ANGLE_DEQP_EGL_TESTS" ] |
| sources = deqp_egl_sources |
| mustpass_dir = _android_mustpass |
| } |
| |
| # The CTS also includes a set of "KHR" tests that are separate from the main body of dEQP tests. |
| |
| config("angle_deqp_khr_common_config") { |
| include_dirs = [ |
| "$deqp_path/external/openglcts/modules/common", |
| "$deqp_path/external/openglcts/modules/gl", |
| "$deqp_path/external/openglcts/modules/gles2", |
| "$deqp_path/external/openglcts/modules/gles3", |
| "$deqp_path/external/openglcts/modules/gles31", |
| "$deqp_path/external/openglcts/modules/gles32", |
| "$deqp_path/external/openglcts/modules/glesext", |
| ] |
| if (is_clang) { |
| cflags = [ "-Wno-header-hygiene" ] # using namespace directive in global context in header |
| } |
| } |
| |
| angle_deqp_source_set("angle_deqp_khr_common") { |
| sources = deqp_khr_common_sources + deqp_khr_test_module_headers + |
| deqp_khr_gl_sources + deqp_khr_gles2_sources + |
| deqp_khr_gles3_sources + deqp_khr_gles31_sources + |
| deqp_khr_gles32_sources + deqp_khr_glesext_sources + |
| [ "deqp_support/glcTestPackageEntry_override.cpp" ] |
| public_deps = [ |
| ":angle_deqp_framework_egl", |
| ":angle_deqp_glshared", |
| ] |
| public_configs = [ ":angle_deqp_khr_common_config" ] |
| |
| # This is a bit of a hack so one test can capture memory limits. |
| include_dirs = [ "$deqp_path/external/vulkancts/framework/vulkan" ] |
| } |
| |
| # The KHR dEQP tests expect a root prefix of "gl_cts" for some reason. |
| # This means we need an extra copy step to make them happy. |
| copy("angle_deqp_khr_data") { |
| sources = [ |
| "$deqp_path/external/openglcts/data/gles3/arrays.test", |
| "$deqp_path/external/openglcts/data/gles3/declarations.test", |
| "$deqp_path/external/openglcts/data/gles3/literal_parsing.test", |
| "$deqp_path/external/openglcts/data/gles3/name_hiding.test", |
| "$deqp_path/external/openglcts/data/gles3/preprocessor.test", |
| "$deqp_path/external/openglcts/data/gles3/switch.test", |
| ] |
| |
| outputs = [ |
| "$root_out_dir/$angle_data_dir/gl_cts/data/gles3/{{source_file_part}}", |
| ] |
| } |
| |
| template("angle_deqp_khr_gtest") { |
| angle_deqp_gtest(target_name) { |
| forward_variables_from(invoker, "*") |
| deps = [ |
| ":angle_deqp_khr_common", |
| ":angle_deqp_khr_data", |
| ] |
| |
| defines += [ "ANGLE_DEQP_DATA_DIR=\"$angle_data_dir\"" ] |
| |
| mustpass_dir = _khronos_mustpass |
| |
| data_deps = [ |
| ":angle_deqp_khr_data", |
| ] |
| } |
| } |
| |
| angle_deqp_khr_gtest("khr_gles2") { |
| defines = [ "ANGLE_DEQP_KHR_GLES2_TESTS" ] |
| mustpass_name = "gles2-khr-master.txt" |
| } |
| |
| angle_deqp_khr_gtest("khr_gles3") { |
| defines = [ "ANGLE_DEQP_KHR_GLES3_TESTS" ] |
| mustpass_name = "gles3-khr-master.txt" |
| } |
| |
| angle_deqp_khr_gtest("khr_gles31") { |
| defines = [ "ANGLE_DEQP_KHR_GLES31_TESTS" ] |
| mustpass_name = "gles31-khr-master.txt" |
| } |
| } |