diff --git a/BUILD.gn b/BUILD.gn index 0a3fe4535d..64d1cfe2ef 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -580,10 +580,17 @@ dawn_component("libdawn_wire") { # GLFW wrapping target ############################################################################### -# GLFW does not support Android or Fuchsia, so provide a small mock library -# that can be linked into the Dawn tests on these platforms. Otherwise, use -# the real library from third_party/. -if (is_fuchsia) { +# GLFW does not support ChromeOS, Android or Fuchsia, so provide a small mock +# library that can be linked into the Dawn tests on these platforms. Otherwise, +# use the real library from third_party/. +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") { # Allow inclusion of configs = [ "third_party:glfw_public" ] @@ -610,10 +617,8 @@ if (is_fuchsia) { ] } } else { + # Just skip GLFW on other systems group("dawn_glfw") { - public_deps = [ - "third_party:glfw", - ] } } @@ -815,7 +820,6 @@ source_set("dawn_end2end_tests_sources") { testonly = true deps = [ - ":dawn_glfw", ":dawn_utils", ":libdawn_native", ":libdawn_wire", diff --git a/third_party/BUILD.gn b/third_party/BUILD.gn index 53e56db970..d45df8eb4b 100644 --- a/third_party/BUILD.gn +++ b/third_party/BUILD.gn @@ -231,44 +231,44 @@ if (!build_with_chromium) { # 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") { - include_dirs = [ "${glfw_dir}/include" ] + config("glfw_public") { + include_dirs = [ "${glfw_dir}/include" ] - if (is_win) { - defines = [ "_GLFW_WIN32" ] + if (is_win) { + defines = [ "_GLFW_WIN32" ] + } + + if (is_mac) { + defines = [ "_GLFW_COCOA" ] + } + + if (is_linux) { + defines = [ "_GLFW_X11" ] + } } - if (is_mac) { - defines = [ "_GLFW_COCOA" ] - } + static_library("glfw") { + public_configs = [ ":glfw_public" ] - if (is_linux) { - defines = [ "_GLFW_X11" ] - } -} + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] -static_library("glfw") { - public_configs = [ ":glfw_public" ] + if (is_msvc) { + # 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 = [ "${glfw_dir}/include/GLFW/glfw3.h", "${glfw_dir}/include/GLFW/glfw3native.h", @@ -284,79 +284,79 @@ static_library("glfw") { "${glfw_dir}/src/vulkan.c", "${glfw_dir}/src/window.c", ] - } - libs = [] + libs = [] - if (is_win) { - sources += [ - "${glfw_dir}/src/wgl_context.c", - "${glfw_dir}/src/wgl_context.h", - "${glfw_dir}/src/win32_init.c", - "${glfw_dir}/src/win32_joystick.c", - "${glfw_dir}/src/win32_joystick.h", - "${glfw_dir}/src/win32_monitor.c", - "${glfw_dir}/src/win32_platform.h", - "${glfw_dir}/src/win32_thread.c", - "${glfw_dir}/src/win32_time.c", - "${glfw_dir}/src/win32_window.c", - ] - } + if (is_win) { + sources += [ + "${glfw_dir}/src/wgl_context.c", + "${glfw_dir}/src/wgl_context.h", + "${glfw_dir}/src/win32_init.c", + "${glfw_dir}/src/win32_joystick.c", + "${glfw_dir}/src/win32_joystick.h", + "${glfw_dir}/src/win32_monitor.c", + "${glfw_dir}/src/win32_platform.h", + "${glfw_dir}/src/win32_thread.c", + "${glfw_dir}/src/win32_time.c", + "${glfw_dir}/src/win32_window.c", + ] + } - if (is_linux || is_mac) { - sources += [ - "${glfw_dir}/src/posix_thread.c", - "${glfw_dir}/src/posix_thread.h", - ] - } + if (is_linux || is_mac) { + sources += [ + "${glfw_dir}/src/posix_thread.c", + "${glfw_dir}/src/posix_thread.h", + ] + } - if (is_linux) { - sources += [ - "${glfw_dir}/src/glx_context.c", - "${glfw_dir}/src/glx_context.h", - "${glfw_dir}/src/linux_joystick.c", - "${glfw_dir}/src/linux_joystick.h", - "${glfw_dir}/src/posix_time.c", - "${glfw_dir}/src/posix_time.h", - "${glfw_dir}/src/x11_init.c", - "${glfw_dir}/src/x11_monitor.c", - "${glfw_dir}/src/x11_platform.h", - "${glfw_dir}/src/x11_window.c", - "${glfw_dir}/src/xkb_unicode.c", - "${glfw_dir}/src/xkb_unicode.h", - ] + if (is_linux) { + sources += [ + "${glfw_dir}/src/glx_context.c", + "${glfw_dir}/src/glx_context.h", + "${glfw_dir}/src/linux_joystick.c", + "${glfw_dir}/src/linux_joystick.h", + "${glfw_dir}/src/posix_time.c", + "${glfw_dir}/src/posix_time.h", + "${glfw_dir}/src/x11_init.c", + "${glfw_dir}/src/x11_monitor.c", + "${glfw_dir}/src/x11_platform.h", + "${glfw_dir}/src/x11_window.c", + "${glfw_dir}/src/xkb_unicode.c", + "${glfw_dir}/src/xkb_unicode.h", + ] - libs += [ - "rt", - "dl", - "X11", - "Xcursor", - "Xinerama", - "Xrandr", - ] - } + libs += [ + "rt", + "dl", + "X11", + "Xcursor", + "Xinerama", + "Xrandr", + ] + } - if (is_mac) { - sources += [ - "${glfw_dir}/src/cocoa_init.m", - "${glfw_dir}/src/cocoa_joystick.h", - "${glfw_dir}/src/cocoa_joystick.m", - "${glfw_dir}/src/cocoa_monitor.m", - "${glfw_dir}/src/cocoa_platform.h", - "${glfw_dir}/src/cocoa_time.c", - "${glfw_dir}/src/cocoa_window.m", - "${glfw_dir}/src/nsgl_context.h", - "${glfw_dir}/src/nsgl_context.m", - ] - libs += [ - "Cocoa.framework", - "IOKit.framework", - "CoreFoundation.framework", - "CoreVideo.framework", - ] - cflags_objc = [ - "-Wno-sign-compare", - "-Wno-unguarded-availability", - ] + if (is_mac) { + sources += [ + "${glfw_dir}/src/cocoa_init.m", + "${glfw_dir}/src/cocoa_joystick.h", + "${glfw_dir}/src/cocoa_joystick.m", + "${glfw_dir}/src/cocoa_monitor.m", + "${glfw_dir}/src/cocoa_platform.h", + "${glfw_dir}/src/cocoa_time.c", + "${glfw_dir}/src/cocoa_window.m", + "${glfw_dir}/src/nsgl_context.h", + "${glfw_dir}/src/nsgl_context.m", + ] + libs += [ + "Cocoa.framework", + "IOKit.framework", + "CoreFoundation.framework", + "CoreVideo.framework", + ] + cflags_objc = [ + "-Wno-sign-compare", + "-Wno-unguarded-availability", + ] + } } }