Skip to content

Commit

Permalink
Improve library detections
Browse files Browse the repository at this point in the history
Now it automatically finds files from Qt 5 and supports the upstream
ANGLE on Windows and macOS.
  • Loading branch information
akihikodaki committed Dec 11, 2021
1 parent 8db879f commit 344c91e
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 10 deletions.
33 changes: 27 additions & 6 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -164,22 +164,43 @@ endif
# Dependencies
dl_dep = cc.find_library('dl', required: false)
gl_dep = dependency('gl', required: false)
egl_dep = dependency('egl', required: false)

# Optional dependencies for tests
x11_dep = dependency('x11', required: false)

# GLES v2 and v1 may have pkg-config files, courtesy of downstream
# packagers; let's check those first, and fall back to find_library()
# if we fail
# We have multiple checks for EGL and GLES v2/v1 to support different providers:
# 1. pkg-config for Mesa
# 2. find_library() for ANGLE, which do not support pkg-config nor CMake.
# Note that Microsoft's "link" requires "lib" prefix.
# 3. CMake for Qt 5, which bundles ANGLE.
egl_dep = dependency('egl', required: false)
if not egl_dep.found()
egl_dep = cc.find_library('EGL', required: false)
endif
if not egl_dep.found()
egl_dep = cc.find_library('libEGL.dll', required: false)
endif
if not egl_dep.found()
egl_dep = dependency('Qt5Gui', required: false)
endif

gles2_dep = dependency('glesv2', required: false)
if not gles2_dep.found()
gles2_dep = cc.find_library('libGLESv2', required: false)
gles2_dep = cc.find_library('GLESv2', required: false)
endif
if not gles2_dep.found()
gles2_dep = cc.find_library('libGLESv2.dll', required: false)
endif
if not gles2_dep.found()
egl_dep = dependency('Qt5Gui', required: false)
endif

gles1_dep = dependency('glesv1_cm', required: false)
if not gles1_dep.found()
gles1_dep = cc.find_library('libGLESv1_CM', required: false)
gles1_dep = cc.find_library('GLESv1_CM', required: false)
endif
if not gles1_dep.found()
gles1_dep = cc.find_library('libGLESv1_CM.dll', required: false)
endif

# On windows, the DLL has to have all of its functions
Expand Down
5 changes: 3 additions & 2 deletions src/dispatch_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -175,9 +175,10 @@

#if defined(__APPLE__)
#define GLX_LIB "/opt/X11/lib/libGL.1.dylib"
#define EGL_LIB "libEGL.dylib"
#define OPENGL_LIB "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL"
#define GLES1_LIB "libGLESv1_CM.so"
#define GLES2_LIB "libGLESv2.so"
#define GLES1_LIB "libGLESv1_CM.dylib"
#define GLES2_LIB "libGLESv2.dylib"
#elif defined(__ANDROID__)
#define GLX_LIB "libGLESv2.so"
#define EGL_LIB "libEGL.so"
Expand Down
2 changes: 1 addition & 1 deletion src/dispatch_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
#define PLATFORM_HAS_GLX ENABLE_GLX
#define PLATFORM_HAS_WGL 1
#elif defined(__APPLE__)
#define PLATFORM_HAS_EGL 0
#define PLATFORM_HAS_EGL ENABLE_EGL
#define PLATFORM_HAS_GLX ENABLE_GLX
#define PLATFORM_HAS_WGL 0
#elif defined(ANDROID)
Expand Down
2 changes: 1 addition & 1 deletion src/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ endif
# Maintain compatibility with autotools; see: https://github.com/anholt/libepoxy/issues/108
darwin_versions = [1, '1.0']

epoxy_deps = [ dl_dep, ]
epoxy_deps = [ dl_dep, egl_dep ]
if host_system == 'windows'
epoxy_deps += [ opengl32_dep, gdi32_dep ]
endif
Expand Down

0 comments on commit 344c91e

Please sign in to comment.