BUILD.gn: Only build dawn_bindings in standalone

The BackendBinding that implement correct interactions between Dawn and
GLFW windows is only needed when compiling the Dawn samples. This only
happen in standalone so move the dawn_bindings there.

This fixes an issue where the ChromeOS build would discover the Dawn
BUILD.gn file and try to build dawn_bindings that depended on a fake
GLFW target, making the GLFW #includes fail.

With dawn_binding moved in dawn_standalone, all targets discoverable by
a Chromium build that use GLFW do so behind the dawn_enable_opengl flag,
which is always false on ChromeOS.

Also reverts https://dawn-review.googlesource.com/c/dawn/+/13620 because
we want to allow building dawn_end2end_tests on ChromeOS even if the
browser doesn't use_dawn.

BUG=1025326

Change-Id: I8ab965c5da68ca422912b21f87f65e32e789ee8a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/13820
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Brian Ho <hob@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
Corentin Wallez 2019-11-19 18:58:50 +00:00 committed by Commit Bot service account
parent 452225d6be
commit 54e5072f5b
1 changed files with 50 additions and 56 deletions

106
BUILD.gn
View File

@ -21,13 +21,6 @@ import("scripts/dawn_overrides_with_defaults.gni")
import("//testing/test.gni")
if (build_with_chromium) {
# Chromium build targets may not depend on dawn unless use_dawn is set. This
# assertion helps avoid accidental dependencies creeping into chromium.
import("//ui/gl/features.gni")
assert(use_dawn)
}
###############################################################################
# dawn_platform
###############################################################################
@ -717,55 +710,6 @@ static_library("dawn_utils") {
]
}
static_library("dawn_bindings") {
configs += [ "${dawn_root}/src/common:dawn_internal" ]
sources = [
"src/utils/BackendBinding.cpp",
"src/utils/BackendBinding.h",
]
public_deps = [
"${dawn_root}/src/dawn:dawn_headers",
]
deps = [
":dawn_glfw",
":libdawn_native",
"${dawn_root}/src/common",
]
libs = []
if (dawn_enable_d3d12) {
sources += [ "src/utils/D3D12Binding.cpp" ]
}
if (dawn_enable_metal) {
sources += [ "src/utils/MetalBinding.mm" ]
libs += [
"Metal.framework",
"QuartzCore.framework",
]
# Suppress warnings that Metal isn't in the deployment target of Chrome
if (is_mac) {
cflags_objcc = [ "-Wno-unguarded-availability" ]
}
}
if (dawn_enable_null) {
sources += [ "src/utils/NullBinding.cpp" ]
}
if (dawn_enable_opengl) {
sources += [ "src/utils/OpenGLBinding.cpp" ]
}
if (dawn_enable_vulkan) {
sources += [ "src/utils/VulkanBinding.cpp" ]
}
}
###############################################################################
# Dawn test targets
###############################################################################
@ -1103,6 +1047,56 @@ group("dawn_perf_tests_temp_group") {
###############################################################################
if (dawn_standalone) {
# Library to handle the interaction of Dawn with GLFW windows in samples
static_library("dawn_bindings") {
configs += [ "${dawn_root}/src/common:dawn_internal" ]
sources = [
"src/utils/BackendBinding.cpp",
"src/utils/BackendBinding.h",
]
public_deps = [
"${dawn_root}/src/dawn:dawn_headers",
]
deps = [
":dawn_glfw",
":libdawn_native",
"${dawn_root}/src/common",
]
libs = []
if (dawn_enable_d3d12) {
sources += [ "src/utils/D3D12Binding.cpp" ]
}
if (dawn_enable_metal) {
sources += [ "src/utils/MetalBinding.mm" ]
libs += [
"Metal.framework",
"QuartzCore.framework",
]
# Suppress warnings that Metal isn't in the deployment target of Chrome
if (is_mac) {
cflags_objcc = [ "-Wno-unguarded-availability" ]
}
}
if (dawn_enable_null) {
sources += [ "src/utils/NullBinding.cpp" ]
}
if (dawn_enable_opengl) {
sources += [ "src/utils/OpenGLBinding.cpp" ]
}
if (dawn_enable_vulkan) {
sources += [ "src/utils/VulkanBinding.cpp" ]
}
}
# Static library to contain code and dependencies common to all samples
static_library("dawn_sample_utils") {
sources = [