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 Jun 7, 2024
1 parent 2df68f8 commit 9fdedad
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 11 deletions.
36 changes: 29 additions & 7 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -165,25 +165,47 @@ endif
# Dependencies
dl_dep = cc.find_library('dl', required: false)
gl_dep = dependency('gl', required: false)
egl_dep = dependency('egl', required: false)
elg_headers_dep = egl_dep.partial_dependency(compile_args: true, includes: true)

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

# 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() and host_system == 'windows'
egl_dep = cc.find_library('libEGL.dll', required: false)
endif
if not egl_dep.found()
egl_dep = dependency('Qt5Gui', modules: 'Qt5::Gui_EGL', 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() and host_system == 'windows'
gles2_dep = cc.find_library('libGLESv2.dll', required: false)
endif
if not gles2_dep.found()
egl_dep = dependency('Qt5Gui', modules: 'Qt5::Gui_GLESv2', 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() and host_system == 'windows'
gles1_dep = cc.find_library('libGLESv1_CM.dll', required: false)
endif

elg_headers_dep = egl_dep.partial_dependency(compile_args: true, includes: true)

# On windows, the DLL has to have all of its functions
# resolved at link time, so we have to link directly against
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 9fdedad

Please sign in to comment.