Skip to content

Commit 8611b07

Browse files
committed
Improve library detections
Now it automatically finds files from Qt 5 and supports the upstream ANGLE on Windows and macOS.
1 parent c84bc94 commit 8611b07

File tree

4 files changed

+34
-11
lines changed

4 files changed

+34
-11
lines changed

meson.build

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -165,25 +165,47 @@ endif
165165
# Dependencies
166166
dl_dep = cc.find_library('dl', required: false)
167167
gl_dep = dependency('gl', required: false)
168-
egl_dep = dependency('egl', required: false)
169-
elg_headers_dep = egl_dep.partial_dependency(compile_args: true, includes: true)
170168

171169
# Optional dependencies for tests
172170
x11_dep = dependency('x11', required: false)
173171
x11_headers_dep = x11_dep.partial_dependency(compile_args: true, includes: true)
174172

175-
# GLES v2 and v1 may have pkg-config files, courtesy of downstream
176-
# packagers; let's check those first, and fall back to find_library()
177-
# if we fail
173+
# We have multiple checks for EGL and GLES v2/v1 to support different providers:
174+
# 1. pkg-config for Mesa
175+
# 2. find_library() for ANGLE, which do not support pkg-config nor CMake.
176+
# Note that Microsoft's "link" requires "lib" prefix.
177+
# 3. CMake for Qt 5, which bundles ANGLE.
178+
egl_dep = dependency('egl', required: false)
179+
if not egl_dep.found()
180+
egl_dep = cc.find_library('EGL', required: false)
181+
endif
182+
if not egl_dep.found()
183+
egl_dep = cc.find_library('libEGL.dll', required: false)
184+
endif
185+
if not egl_dep.found()
186+
egl_dep = dependency('Qt5Gui', modules: 'Qt5::Gui_EGL', required: false)
187+
endif
188+
178189
gles2_dep = dependency('glesv2', required: false)
179190
if not gles2_dep.found()
180-
gles2_dep = cc.find_library('libGLESv2', required: false)
191+
gles2_dep = cc.find_library('GLESv2', required: false)
192+
endif
193+
if not gles2_dep.found()
194+
gles2_dep = cc.find_library('libGLESv2.dll', required: false)
195+
endif
196+
if not gles2_dep.found()
197+
egl_dep = dependency('Qt5Gui', modules: 'Qt5::Gui_GLESv2', required: false)
181198
endif
182199

183200
gles1_dep = dependency('glesv1_cm', required: false)
184201
if not gles1_dep.found()
185-
gles1_dep = cc.find_library('libGLESv1_CM', required: false)
202+
gles1_dep = cc.find_library('GLESv1_CM', required: false)
186203
endif
204+
if not gles1_dep.found()
205+
gles1_dep = cc.find_library('libGLESv1_CM.dll', required: false)
206+
endif
207+
208+
elg_headers_dep = egl_dep.partial_dependency(compile_args: true, includes: true)
187209

188210
# On windows, the DLL has to have all of its functions
189211
# resolved at link time, so we have to link directly against

src/dispatch_common.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,10 @@
175175

176176
#if defined(__APPLE__)
177177
#define GLX_LIB "/opt/X11/lib/libGL.1.dylib"
178+
#define EGL_LIB "libEGL.dylib"
178179
#define OPENGL_LIB "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL"
179-
#define GLES1_LIB "libGLESv1_CM.so"
180-
#define GLES2_LIB "libGLESv2.so"
180+
#define GLES1_LIB "libGLESv1_CM.dylib"
181+
#define GLES2_LIB "libGLESv2.dylib"
181182
#elif defined(__ANDROID__)
182183
#define GLX_LIB "libGLESv2.so"
183184
#define EGL_LIB "libEGL.so"

src/dispatch_common.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
#define PLATFORM_HAS_GLX ENABLE_GLX
2929
#define PLATFORM_HAS_WGL 1
3030
#elif defined(__APPLE__)
31-
#define PLATFORM_HAS_EGL 0
31+
#define PLATFORM_HAS_EGL ENABLE_EGL
3232
#define PLATFORM_HAS_GLX ENABLE_GLX
3333
#define PLATFORM_HAS_WGL 0
3434
#elif defined(ANDROID)

src/meson.build

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ endif
5555
# Maintain compatibility with autotools; see: https://github.com/anholt/libepoxy/issues/108
5656
darwin_versions = [1, '1.0']
5757

58-
epoxy_deps = [ dl_dep, ]
58+
epoxy_deps = [ dl_dep, egl_dep ]
5959
if host_system == 'windows'
6060
epoxy_deps += [ opengl32_dep, gdi32_dep ]
6161
endif

0 commit comments

Comments
 (0)