| # Copyright 2015 The Chromium 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("//testing/test.gni") |
| import("//build/config/chromecast_build.gni") |
| import("//third_party/angle/gni/angle.gni") |
| |
| unittests_gypi = exec_script("//build/gypi_to_gn.py", |
| [ |
| rebase_path("angle_unittests.gypi"), |
| "--replace=<(angle_path)=.", |
| ], |
| "scope", |
| [ "angle_unittests.gypi" ]) |
| |
| test("angle_unittests") { |
| include_dirs = [ |
| "testing/gtest/include", |
| "../../src", |
| ] |
| |
| sources = rebase_path(unittests_gypi.angle_unittests_sources, ".", "../..") |
| |
| if (angle_enable_hlsl) { |
| sources += |
| rebase_path(unittests_gypi.angle_unittests_hlsl_sources, ".", "../..") |
| defines = [ "ANGLE_ENABLE_HLSL" ] |
| } |
| |
| sources += [ "//gpu/angle_unittest_main.cc" ] |
| |
| deps = [ |
| "//base", |
| "//base/test:test_support", |
| "//testing/gmock", |
| "//testing/gtest", |
| "//third_party/angle:libANGLE", |
| "//third_party/angle:preprocessor", |
| "//third_party/angle:translator", |
| ] |
| } |
| |
| if (is_win || is_linux || is_mac || is_android) { |
| end2end_gypi = exec_script("//build/gypi_to_gn.py", |
| [ |
| rebase_path("angle_end2end_tests.gypi"), |
| "--replace=<(angle_path)=.", |
| ], |
| "scope", |
| [ "angle_end2end_tests.gypi" ]) |
| |
| test("angle_end2end_tests") { |
| include_dirs = [ |
| "testing/gtest/include", |
| "../../src/tests", |
| "../../util", |
| ] |
| |
| if (is_android) { |
| use_native_activity = true |
| } |
| |
| sources = |
| rebase_path(end2end_gypi.angle_end2end_tests_sources, ".", "../..") |
| |
| if (is_win) { |
| sources += rebase_path(end2end_gypi.angle_end2end_tests_win_sources, |
| ".", |
| "../..") |
| } |
| if (use_x11) { |
| sources += rebase_path(end2end_gypi.angle_end2end_tests_x11_sources, |
| ".", |
| "../..") |
| } |
| |
| sources += [ "//gpu/angle_end2end_tests_main.cc" ] |
| |
| configs += [ |
| "//third_party/angle:internal_config", |
| "//third_party/angle:libANGLE_config", |
| ] |
| |
| if (is_linux && !is_component_build) { |
| # Set rpath to find libEGL.so and libGLESv2.so even in a non-component build. |
| configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] |
| } |
| |
| deps = [ |
| "//base", |
| "//base/test:test_support", |
| "//testing/gmock", |
| "//testing/gtest", |
| "//third_party/angle:angle_image_util", |
| "//third_party/angle:angle_util", |
| "//third_party/angle:libEGL", |
| "//third_party/angle:libGLESv2", |
| "//third_party/angle:preprocessor", |
| "//third_party/angle:translator", |
| ] |
| } |
| |
| white_box_gypi = exec_script("//build/gypi_to_gn.py", |
| [ |
| rebase_path("angle_white_box_tests.gypi"), |
| "--replace=<(angle_path)=.", |
| ], |
| "scope", |
| [ "angle_white_box_tests.gypi" ]) |
| |
| test("angle_white_box_tests") { |
| include_dirs = [ |
| "testing/gtest/include", |
| "../../src/tests", |
| "../../util", |
| ] |
| |
| if (is_android) { |
| use_native_activity = true |
| } |
| |
| sources = |
| rebase_path(white_box_gypi.angle_white_box_tests_sources, ".", "../..") |
| |
| if (is_win) { |
| sources += rebase_path(white_box_gypi.angle_white_box_tests_win_sources, |
| ".", |
| "../..") |
| } |
| |
| # Share the same main file as end2end_tests. |
| # TODO(jmadill): Probably should rename this if we're sharing. |
| sources += [ "//gpu/angle_end2end_tests_main.cc" ] |
| |
| configs += [ |
| "//third_party/angle:internal_config", |
| "//third_party/angle:libANGLE_config", |
| ] |
| |
| deps = [ |
| "//base", |
| "//base/test:test_support", |
| "//testing/gmock", |
| "//testing/gtest", |
| "//third_party/angle:angle_util_static", |
| "//third_party/angle:libANGLE", |
| "//third_party/angle:libEGL_static", |
| "//third_party/angle:libGLESv2_static", |
| "//third_party/angle:preprocessor", |
| "//third_party/angle:translator", |
| ] |
| } |
| } |
| |
| if (is_win || is_linux) { |
| perftests_gypi = exec_script("//build/gypi_to_gn.py", |
| [ |
| rebase_path("angle_perftests.gypi"), |
| "--replace=<(angle_path)=.", |
| ], |
| "scope", |
| [ "angle_perftests.gypi" ]) |
| |
| test("angle_perftests") { |
| include_dirs = [ |
| "testing/gtest/include", |
| "../../src/tests", |
| "../../util", |
| ] |
| |
| sources = rebase_path(perftests_gypi.angle_perf_tests_sources, ".", "../..") |
| |
| if (is_win) { |
| sources += |
| rebase_path(perftests_gypi.angle_perf_tests_win_sources, ".", "../..") |
| } |
| |
| sources += [ "//gpu/angle_perftests_main.cc" ] |
| |
| configs += [ |
| "//third_party/angle:internal_config", |
| "//third_party/angle:libANGLE_config", |
| ] |
| |
| deps = [ |
| "//base", |
| "//base/test:test_support", |
| "//testing/gmock", |
| "//testing/gtest", |
| "//third_party/angle:angle_util_static", |
| "//third_party/angle:libEGL_static", |
| "//third_party/angle:libGLESv2_static", |
| ] |
| } |
| } |
| |
| ###----------------------------------------------------- |
| ### dEQP tests |
| ###----------------------------------------------------- |
| |
| declare_args() { |
| # Don't build dEQP by default. |
| build_angle_deqp_tests = false |
| } |
| |
| # TODO(jmadill): Other platforms. |
| if (build_angle_deqp_tests) { |
| deqp_gypi = exec_script("//build/gypi_to_gn.py", |
| [ |
| rebase_path("deqp.gypi"), |
| "--replace=<(angle_path)=.", |
| "--replace=<(deqp_path)=../deqp/src", |
| ], |
| "scope", |
| [ "deqp.gypi" ]) |
| |
| config("angle_deqp_support") { |
| include_dirs = rebase_path(deqp_gypi.deqp_include_dirs, ".", "../..") |
| if (is_win) { |
| include_dirs += [ "../deqp/src/framework/platform/win32" ] |
| cflags = deqp_gypi.deqp_win_cflags |
| } |
| if (is_android) { |
| include_dirs += [ "../../../deqp/src/framework/platform/android" ] |
| } |
| defines = deqp_gypi.deqp_defines |
| defines += [ "_MBCS" ] |
| |
| # 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) { |
| # _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_rtti", |
| ] |
| |
| if (is_win) { |
| deqp_undefine_configs += [ |
| "//build/config/win:lean_and_mean", |
| "//build/config/win:nominmax", |
| "//build/config/win:unicode", |
| ] |
| } |
| |
| if (is_linux || is_android) { |
| deqp_undefine_configs += [ "//build/config/gcc:no_exceptions" ] |
| } |
| |
| static_library("angle_deqp_decpp") { |
| configs -= deqp_undefine_configs |
| public_configs = [ |
| ":angle_deqp_support", |
| "//build/config/compiler:no_chromium_code", |
| "//third_party/angle:internal_config", |
| ] |
| sources = rebase_path(deqp_gypi.deqp_libtester_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" ] |
| } |
| } |
| |
| static_library("angle_deqp_libtester") { |
| public_deps = [ |
| ":angle_deqp_decpp", |
| "//third_party/angle:angle_common", |
| "//third_party/angle:angle_util", |
| "//third_party/angle:libEGL", |
| "//third_party/libpng:libpng", |
| ] |
| configs -= deqp_undefine_configs |
| public_configs = [ ":angle_deqp_libtester_config" ] |
| sources = rebase_path(deqp_gypi.deqp_libtester_sources, ".", "../..") |
| if (is_win) { |
| sources += rebase_path(deqp_gypi.deqp_libtester_sources_win, ".", "../..") |
| } |
| if (is_linux || is_android) { |
| sources += |
| rebase_path(deqp_gypi.deqp_libtester_sources_unix, ".", "../..") |
| } |
| if (is_android) { |
| sources += |
| rebase_path(deqp_gypi.deqp_libtester_sources_android, ".", "../..") |
| libs = [ "log" ] |
| } |
| } |
| |
| config("angle_deqp_gtest_support_config") { |
| include_dirs = [ "third_party/gpu_test_expectations" ] |
| } |
| |
| source_set("angle_deqp_gtest_support") { |
| testonly = true |
| public_deps = [ |
| "//base", |
| "//base/test:test_support", |
| "//testing/gtest", |
| "//third_party/angle:angle_common", |
| "//third_party/angle:angle_util", |
| ] |
| public_configs = [ ":angle_deqp_gtest_support_config" ] |
| sources = deqp_gypi.deqp_gpu_test_expectations_sources |
| sources += [ "//gpu/angle_deqp_tests_main.cc" ] |
| |
| # Taken from gpu/BUILD.gn |
| # TODO(jmadill): this should be in a shared location |
| if (is_linux && !is_chromecast) { |
| libs = [ "pci" ] |
| } |
| } |
| |
| api_names = [ |
| "gles2", |
| "gles3", |
| "gles31", |
| "egl", |
| ] |
| target_defines = [ |
| "ANGLE_DEQP_GLES2_TESTS", |
| "ANGLE_DEQP_GLES3_TESTS", |
| "ANGLE_DEQP_GLES31_TESTS", |
| "ANGLE_DEQP_EGL_TESTS", |
| ] |
| target_sources = [ |
| deqp_gypi.deqp_gles2_sources, |
| deqp_gypi.deqp_gles3_sources, |
| deqp_gypi.deqp_gles31_sources, |
| deqp_gypi.deqp_egl_sources, |
| ] |
| |
| foreach(index, |
| [ |
| 0, |
| 1, |
| 2, |
| 3, |
| ]) { |
| api_name = api_names[index] |
| config_name = "angle_deqp_lib${api_name}_config" |
| config(config_name) { |
| defines = [ target_defines[index] ] |
| } |
| |
| shared_library_name = "angle_deqp_lib${api_name}" |
| shared_library(shared_library_name) { |
| deps = [ |
| ":angle_deqp_libtester", |
| "//third_party/angle:angle_util", |
| ] |
| |
| configs -= deqp_undefine_configs |
| if (is_android) { |
| configs -= [ "//build/config/android:hide_all_but_jni_onload" ] |
| } |
| public_configs = [ ":${config_name}" ] |
| |
| sources = rebase_path(target_sources[index], ".", "../..") |
| sources += [ |
| "deqp_support/angle_deqp_libtester_main.cpp", |
| "deqp_support/tcuANGLEPlatform.cpp", |
| "deqp_support/tcuANGLEPlatform.h", |
| ] |
| } |
| |
| test_name = "angle_deqp_${api_name}_tests" |
| test(test_name) { |
| deps = [ |
| ":${shared_library_name}", |
| ":angle_deqp_gtest_support", |
| ] |
| |
| # Must be included outside of the source set for the define |
| sources = [ |
| "deqp_support/angle_deqp_gtest.cpp", |
| ] |
| |
| data = [ |
| "deqp_support/deqp_${api_name}_test_expectations.txt", |
| "../../../deqp/src/android/cts/master/${api_name}-master.txt", |
| "../../../deqp/src/data/", |
| ] |
| |
| if (is_linux && !is_component_build) { |
| # Set rpath to find *.so files even in a non-component build. |
| configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ] |
| } |
| |
| if (is_android) { |
| use_native_activity = true |
| } |
| } |
| } |
| } |