Improve library detections

Now it automatically finds files from Qt 5 and supports the upstream
ANGLE on Windows and macOS.
macos/v1.5.9^2
Akihiko Odaki 3 years ago
parent c84bc94593
commit 8611b075ec
  1. 36
      meson.build
  2. 5
      src/dispatch_common.c
  3. 2
      src/dispatch_common.h
  4. 2
      src/meson.build

@ -165,25 +165,47 @@ endif
# Dependencies # Dependencies
dl_dep = cc.find_library('dl', required: false) dl_dep = cc.find_library('dl', required: false)
gl_dep = dependency('gl', 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 # Optional dependencies for tests
x11_dep = dependency('x11', required: false) x11_dep = dependency('x11', required: false)
x11_headers_dep = x11_dep.partial_dependency(compile_args: true, includes: true) x11_headers_dep = x11_dep.partial_dependency(compile_args: true, includes: true)
# GLES v2 and v1 may have pkg-config files, courtesy of downstream # We have multiple checks for EGL and GLES v2/v1 to support different providers:
# packagers; let's check those first, and fall back to find_library() # 1. pkg-config for Mesa
# if we fail # 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', modules: 'Qt5::Gui_EGL', required: false)
endif
gles2_dep = dependency('glesv2', required: false) gles2_dep = dependency('glesv2', required: false)
if not gles2_dep.found() 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', modules: 'Qt5::Gui_GLESv2', required: false)
endif endif
gles1_dep = dependency('glesv1_cm', required: false) gles1_dep = dependency('glesv1_cm', required: false)
if not gles1_dep.found() if not gles1_dep.found()
gles1_dep = cc.find_library('libGLESv1_CM', required: false) gles1_dep = cc.find_library('GLESv1_CM', required: false)
endif endif
if not gles1_dep.found()
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 # On windows, the DLL has to have all of its functions
# resolved at link time, so we have to link directly against # resolved at link time, so we have to link directly against

@ -175,9 +175,10 @@
#if defined(__APPLE__) #if defined(__APPLE__)
#define GLX_LIB "/opt/X11/lib/libGL.1.dylib" #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 OPENGL_LIB "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL"
#define GLES1_LIB "libGLESv1_CM.so" #define GLES1_LIB "libGLESv1_CM.dylib"
#define GLES2_LIB "libGLESv2.so" #define GLES2_LIB "libGLESv2.dylib"
#elif defined(__ANDROID__) #elif defined(__ANDROID__)
#define GLX_LIB "libGLESv2.so" #define GLX_LIB "libGLESv2.so"
#define EGL_LIB "libEGL.so" #define EGL_LIB "libEGL.so"

@ -28,7 +28,7 @@
#define PLATFORM_HAS_GLX ENABLE_GLX #define PLATFORM_HAS_GLX ENABLE_GLX
#define PLATFORM_HAS_WGL 1 #define PLATFORM_HAS_WGL 1
#elif defined(__APPLE__) #elif defined(__APPLE__)
#define PLATFORM_HAS_EGL 0 #define PLATFORM_HAS_EGL ENABLE_EGL
#define PLATFORM_HAS_GLX ENABLE_GLX #define PLATFORM_HAS_GLX ENABLE_GLX
#define PLATFORM_HAS_WGL 0 #define PLATFORM_HAS_WGL 0
#elif defined(ANDROID) #elif defined(ANDROID)

@ -55,7 +55,7 @@ endif
# Maintain compatibility with autotools; see: https://github.com/anholt/libepoxy/issues/108 # Maintain compatibility with autotools; see: https://github.com/anholt/libepoxy/issues/108
darwin_versions = [1, '1.0'] darwin_versions = [1, '1.0']
epoxy_deps = [ dl_dep, ] epoxy_deps = [ dl_dep, egl_dep ]
if host_system == 'windows' if host_system == 'windows'
epoxy_deps += [ opengl32_dep, gdi32_dep ] epoxy_deps += [ opengl32_dep, gdi32_dep ]
endif endif

Loading…
Cancel
Save