BUILD.gn: Only expose the GLFW target on platforms that support it
Due to the way GN target discovery works, glfw would get discovered in Fuchsia / Android / ChromeOS builds when it isn't supported causing compilation failures. This changes third_party/BUILD.gn so that glfw targets are only created on supported platforms. It also changes dawn_glfw in BUILD.gn to be more robust to building on all platforms. Bug=dawn:221 BUG=chromium:1002895 Change-Id: I8f40b06f680094406d24e9a6dea44b128e59b854 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/11160 Reviewed-by: David Turner <digit@google.com> Reviewed-by: Austin Eng <enga@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
parent
2a2392073b
commit
fad96f6e59
20
BUILD.gn
20
BUILD.gn
|
@ -580,10 +580,17 @@ dawn_component("libdawn_wire") {
|
||||||
# GLFW wrapping target
|
# GLFW wrapping target
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
# GLFW does not support Android or Fuchsia, so provide a small mock library
|
# GLFW does not support ChromeOS, Android or Fuchsia, so provide a small mock
|
||||||
# that can be linked into the Dawn tests on these platforms. Otherwise, use
|
# library that can be linked into the Dawn tests on these platforms. Otherwise,
|
||||||
# the real library from third_party/.
|
# use the real library from third_party/.
|
||||||
if (is_fuchsia) {
|
if (is_win || is_linux || is_mac) {
|
||||||
|
group("dawn_glfw") {
|
||||||
|
public_deps = [
|
||||||
|
"third_party:glfw",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
} else if (is_fuchsia) {
|
||||||
|
# The mock implementation of GLFW on Fuchsia
|
||||||
config("dawn_glfw_public_config") {
|
config("dawn_glfw_public_config") {
|
||||||
# Allow inclusion of <GLFW/glfw3.h>
|
# Allow inclusion of <GLFW/glfw3.h>
|
||||||
configs = [ "third_party:glfw_public" ]
|
configs = [ "third_party:glfw_public" ]
|
||||||
|
@ -610,10 +617,8 @@ if (is_fuchsia) {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
# Just skip GLFW on other systems
|
||||||
group("dawn_glfw") {
|
group("dawn_glfw") {
|
||||||
public_deps = [
|
|
||||||
"third_party:glfw",
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -815,7 +820,6 @@ source_set("dawn_end2end_tests_sources") {
|
||||||
testonly = true
|
testonly = true
|
||||||
|
|
||||||
deps = [
|
deps = [
|
||||||
":dawn_glfw",
|
|
||||||
":dawn_utils",
|
":dawn_utils",
|
||||||
":libdawn_native",
|
":libdawn_native",
|
||||||
":libdawn_wire",
|
":libdawn_wire",
|
||||||
|
|
|
@ -231,44 +231,44 @@ if (!build_with_chromium) {
|
||||||
# GLFW - good enough build targets
|
# GLFW - good enough build targets
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
glfw_dir = dawn_glfw_dir
|
# Only expose GLFW targets on platforms where GLFW is supported: otherwise they
|
||||||
|
# might get discovered by GN when another target in this file is referenced,
|
||||||
|
# and GLFW will bbe built as part of "all" builds, causing compilation failures.
|
||||||
|
if (is_win || is_linux || is_mac) {
|
||||||
|
glfw_dir = dawn_glfw_dir
|
||||||
|
|
||||||
config("glfw_public") {
|
config("glfw_public") {
|
||||||
include_dirs = [ "${glfw_dir}/include" ]
|
include_dirs = [ "${glfw_dir}/include" ]
|
||||||
|
|
||||||
if (is_win) {
|
if (is_win) {
|
||||||
defines = [ "_GLFW_WIN32" ]
|
defines = [ "_GLFW_WIN32" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_mac) {
|
||||||
|
defines = [ "_GLFW_COCOA" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_linux) {
|
||||||
|
defines = [ "_GLFW_X11" ]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_mac) {
|
static_library("glfw") {
|
||||||
defines = [ "_GLFW_COCOA" ]
|
public_configs = [ ":glfw_public" ]
|
||||||
}
|
|
||||||
|
|
||||||
if (is_linux) {
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
||||||
defines = [ "_GLFW_X11" ]
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static_library("glfw") {
|
if (is_msvc) {
|
||||||
public_configs = [ ":glfw_public" ]
|
# nonstandard extension, function/data pointer conversion in expression
|
||||||
|
cflags_c = [ "/wd4152" ]
|
||||||
|
} else {
|
||||||
|
cflags_c = [
|
||||||
|
"-Wno-sign-compare",
|
||||||
|
"-Wno-missing-field-initializers",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
configs -= [ "//build/config/compiler:chromium_code" ]
|
|
||||||
configs += [ "//build/config/compiler:no_chromium_code" ]
|
|
||||||
|
|
||||||
if (is_msvc) {
|
|
||||||
# nonstandard extension, function/data pointer conversion in expression
|
|
||||||
cflags_c = [ "/wd4152" ]
|
|
||||||
} else {
|
|
||||||
cflags_c = [
|
|
||||||
"-Wno-sign-compare",
|
|
||||||
"-Wno-missing-field-initializers",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
# NOTE: For some unknown reason, this library gets build when is_fuchsia
|
|
||||||
# is true, even if absolutely nothing references it, as checked with
|
|
||||||
# `gn refs out/Fuchsia third_party/dawn/third_party:glfw --all`
|
|
||||||
if (!is_fuchsia) {
|
|
||||||
sources = [
|
sources = [
|
||||||
"${glfw_dir}/include/GLFW/glfw3.h",
|
"${glfw_dir}/include/GLFW/glfw3.h",
|
||||||
"${glfw_dir}/include/GLFW/glfw3native.h",
|
"${glfw_dir}/include/GLFW/glfw3native.h",
|
||||||
|
@ -284,79 +284,79 @@ static_library("glfw") {
|
||||||
"${glfw_dir}/src/vulkan.c",
|
"${glfw_dir}/src/vulkan.c",
|
||||||
"${glfw_dir}/src/window.c",
|
"${glfw_dir}/src/window.c",
|
||||||
]
|
]
|
||||||
}
|
libs = []
|
||||||
libs = []
|
|
||||||
|
|
||||||
if (is_win) {
|
if (is_win) {
|
||||||
sources += [
|
sources += [
|
||||||
"${glfw_dir}/src/wgl_context.c",
|
"${glfw_dir}/src/wgl_context.c",
|
||||||
"${glfw_dir}/src/wgl_context.h",
|
"${glfw_dir}/src/wgl_context.h",
|
||||||
"${glfw_dir}/src/win32_init.c",
|
"${glfw_dir}/src/win32_init.c",
|
||||||
"${glfw_dir}/src/win32_joystick.c",
|
"${glfw_dir}/src/win32_joystick.c",
|
||||||
"${glfw_dir}/src/win32_joystick.h",
|
"${glfw_dir}/src/win32_joystick.h",
|
||||||
"${glfw_dir}/src/win32_monitor.c",
|
"${glfw_dir}/src/win32_monitor.c",
|
||||||
"${glfw_dir}/src/win32_platform.h",
|
"${glfw_dir}/src/win32_platform.h",
|
||||||
"${glfw_dir}/src/win32_thread.c",
|
"${glfw_dir}/src/win32_thread.c",
|
||||||
"${glfw_dir}/src/win32_time.c",
|
"${glfw_dir}/src/win32_time.c",
|
||||||
"${glfw_dir}/src/win32_window.c",
|
"${glfw_dir}/src/win32_window.c",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_linux || is_mac) {
|
if (is_linux || is_mac) {
|
||||||
sources += [
|
sources += [
|
||||||
"${glfw_dir}/src/posix_thread.c",
|
"${glfw_dir}/src/posix_thread.c",
|
||||||
"${glfw_dir}/src/posix_thread.h",
|
"${glfw_dir}/src/posix_thread.h",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_linux) {
|
if (is_linux) {
|
||||||
sources += [
|
sources += [
|
||||||
"${glfw_dir}/src/glx_context.c",
|
"${glfw_dir}/src/glx_context.c",
|
||||||
"${glfw_dir}/src/glx_context.h",
|
"${glfw_dir}/src/glx_context.h",
|
||||||
"${glfw_dir}/src/linux_joystick.c",
|
"${glfw_dir}/src/linux_joystick.c",
|
||||||
"${glfw_dir}/src/linux_joystick.h",
|
"${glfw_dir}/src/linux_joystick.h",
|
||||||
"${glfw_dir}/src/posix_time.c",
|
"${glfw_dir}/src/posix_time.c",
|
||||||
"${glfw_dir}/src/posix_time.h",
|
"${glfw_dir}/src/posix_time.h",
|
||||||
"${glfw_dir}/src/x11_init.c",
|
"${glfw_dir}/src/x11_init.c",
|
||||||
"${glfw_dir}/src/x11_monitor.c",
|
"${glfw_dir}/src/x11_monitor.c",
|
||||||
"${glfw_dir}/src/x11_platform.h",
|
"${glfw_dir}/src/x11_platform.h",
|
||||||
"${glfw_dir}/src/x11_window.c",
|
"${glfw_dir}/src/x11_window.c",
|
||||||
"${glfw_dir}/src/xkb_unicode.c",
|
"${glfw_dir}/src/xkb_unicode.c",
|
||||||
"${glfw_dir}/src/xkb_unicode.h",
|
"${glfw_dir}/src/xkb_unicode.h",
|
||||||
]
|
]
|
||||||
|
|
||||||
libs += [
|
libs += [
|
||||||
"rt",
|
"rt",
|
||||||
"dl",
|
"dl",
|
||||||
"X11",
|
"X11",
|
||||||
"Xcursor",
|
"Xcursor",
|
||||||
"Xinerama",
|
"Xinerama",
|
||||||
"Xrandr",
|
"Xrandr",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_mac) {
|
if (is_mac) {
|
||||||
sources += [
|
sources += [
|
||||||
"${glfw_dir}/src/cocoa_init.m",
|
"${glfw_dir}/src/cocoa_init.m",
|
||||||
"${glfw_dir}/src/cocoa_joystick.h",
|
"${glfw_dir}/src/cocoa_joystick.h",
|
||||||
"${glfw_dir}/src/cocoa_joystick.m",
|
"${glfw_dir}/src/cocoa_joystick.m",
|
||||||
"${glfw_dir}/src/cocoa_monitor.m",
|
"${glfw_dir}/src/cocoa_monitor.m",
|
||||||
"${glfw_dir}/src/cocoa_platform.h",
|
"${glfw_dir}/src/cocoa_platform.h",
|
||||||
"${glfw_dir}/src/cocoa_time.c",
|
"${glfw_dir}/src/cocoa_time.c",
|
||||||
"${glfw_dir}/src/cocoa_window.m",
|
"${glfw_dir}/src/cocoa_window.m",
|
||||||
"${glfw_dir}/src/nsgl_context.h",
|
"${glfw_dir}/src/nsgl_context.h",
|
||||||
"${glfw_dir}/src/nsgl_context.m",
|
"${glfw_dir}/src/nsgl_context.m",
|
||||||
]
|
]
|
||||||
libs += [
|
libs += [
|
||||||
"Cocoa.framework",
|
"Cocoa.framework",
|
||||||
"IOKit.framework",
|
"IOKit.framework",
|
||||||
"CoreFoundation.framework",
|
"CoreFoundation.framework",
|
||||||
"CoreVideo.framework",
|
"CoreVideo.framework",
|
||||||
]
|
]
|
||||||
cflags_objc = [
|
cflags_objc = [
|
||||||
"-Wno-sign-compare",
|
"-Wno-sign-compare",
|
||||||
"-Wno-unguarded-availability",
|
"-Wno-unguarded-availability",
|
||||||
]
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue