diff --git a/DEPS b/DEPS index 1ad452582b..cef6310d0a 100644 --- a/DEPS +++ b/DEPS @@ -120,7 +120,7 @@ deps = { # GLFW for tests and samples 'third_party/glfw': { - 'url': '{chromium_git}/external/github.com/glfw/glfw@94773111300fee0453844a4c9407af7e880b4df8', + 'url': '{chromium_git}/external/github.com/glfw/glfw@62e175ef9fae75335575964c845a302447c012c7', }, 'third_party/vulkan_memory_allocator': { diff --git a/third_party/gn/glfw/BUILD.gn b/third_party/gn/glfw/BUILD.gn index b592b4d2c4..1c00094c13 100644 --- a/third_party/gn/glfw/BUILD.gn +++ b/third_party/gn/glfw/BUILD.gn @@ -25,23 +25,6 @@ glfw_dir = dawn_glfw_dir config("glfw_public") { include_dirs = [ "${glfw_dir}/include" ] - - if (is_win) { - defines = [ "_GLFW_WIN32" ] - } - - if (is_mac) { - defines = [ "_GLFW_COCOA" ] - } - - if (is_linux) { - # ANGLE builds only libEGL.so, so tell GLFW to load that instead of - # the default libEGL.so.1. - defines = [ - "_GLFW_X11", - "_GLFW_EGL_LIBRARY=\"libEGL.so\"", - ] - } } static_library("glfw") { @@ -59,56 +42,79 @@ static_library("glfw") { cflags_c = [ "-Wno-sign-compare", "-Wno-missing-field-initializers", + "-Wno-macro-redefined", ] } + defines = [] + libs = [] + + # Common sources. sources = [ "${glfw_dir}/include/GLFW/glfw3.h", "${glfw_dir}/include/GLFW/glfw3native.h", "${glfw_dir}/src/context.c", "${glfw_dir}/src/egl_context.c", - "${glfw_dir}/src/egl_context.h", "${glfw_dir}/src/init.c", "${glfw_dir}/src/input.c", "${glfw_dir}/src/internal.h", + "${glfw_dir}/src/mappings.h", "${glfw_dir}/src/monitor.c", + "${glfw_dir}/src/null_init.c", + "${glfw_dir}/src/null_joystick.c", + "${glfw_dir}/src/null_joystick.h", + "${glfw_dir}/src/null_monitor.c", + "${glfw_dir}/src/null_platform.h", + "${glfw_dir}/src/null_window.c", "${glfw_dir}/src/osmesa_context.c", - "${glfw_dir}/src/osmesa_context.h", + "${glfw_dir}/src/platform.c", + "${glfw_dir}/src/platform.h", "${glfw_dir}/src/vulkan.c", "${glfw_dir}/src/window.c", ] - libs = [] - if (is_win) { + # Code shared by all backends on an OS. + if (is_linux) { + defines += [ "_GLFW_EGL_LIBRARY=\"libEGL.so\"" ] 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", + "${glfw_dir}/src/posix_module.c", + "${glfw_dir}/src/posix_thread.c", + "${glfw_dir}/src/posix_thread.h", + "${glfw_dir}/src/posix_time.c", + "${glfw_dir}/src/posix_time.h", + ] + libs += [ + "m", + "rt", + "dl", ] } - if (is_linux || is_mac) { + if (is_mac) { sources += [ + "${glfw_dir}/src/cocoa_time.c", + "${glfw_dir}/src/cocoa_time.h", + "${glfw_dir}/src/posix_module.c", "${glfw_dir}/src/posix_thread.c", "${glfw_dir}/src/posix_thread.h", ] } - if (is_linux) { + if (is_win) { + sources += [ + "${glfw_dir}/src/win32_module.c", + "${glfw_dir}/src/win32_thread.c", + "${glfw_dir}/src/win32_thread.h", + "${glfw_dir}/src/win32_time.c", + "${glfw_dir}/src/win32_time.h", + ] + } + + # Per-backend code. + if (dawn_use_x11) { + defines += [ "_GLFW_X11" ] 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", @@ -116,34 +122,44 @@ static_library("glfw") { "${glfw_dir}/src/xkb_unicode.c", "${glfw_dir}/src/xkb_unicode.h", ] - libs += [ - "rt", - "dl", "X11", + "Xi", "Xcursor", "Xinerama", "Xrandr", ] } + # No wayland support for GLFW in GN builds. + if (dawn_use_x11) { + if (is_linux) { + sources += [ + "${glfw_dir}/src/linux_joystick.c", + "${glfw_dir}/src/linux_joystick.h", + ] + } + sources += [ + "${glfw_dir}/src/posix_poll.c", + "${glfw_dir}/src/posix_poll.h", + ] + } if (is_mac) { + defines += [ "_GLFW_COCOA" ] 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", ] + frameworks = [ "Cocoa.framework", "IOKit.framework", "CoreFoundation.framework", - "CoreVideo.framework", ] cflags_objc = [ "-Wno-sign-compare", @@ -151,4 +167,17 @@ static_library("glfw") { "-Wno-objc-multiple-method-names", ] } + + if (is_win) { + defines += [ "_GLFW_WIN32" ] + sources += [ + "${glfw_dir}/src/wgl_context.c", + "${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_window.c", + ] + } }