diff options
author | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2017-05-08 23:12:49 +0200 |
---|---|---|
committer | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2017-05-17 23:41:59 +0200 |
commit | 0511fc56e7017209ad18d16551ccaad05de9486c (patch) | |
tree | a00b146b6b58204be0f6307b137a6e195e4a05fd | |
parent | 5ef9c5ea24e5a0761baa2abda46c031eb0f6fd0f (diff) | |
download | libepoxy-0511fc56e7017209ad18d16551ccaad05de9486c.tar.gz |
Make EGL support optional
It is perfectly possible to build Mesa3D with just OpenGL support, and
use with GLX in X.org, without having EGL/OpenGLES support.
However, libepoxy currently unconditionally requires EGL support in its
configure.ac, which causes a build failure when Mesa3D only provides
full OpenGL support:
checking for EGL... no
configure: error: Package requirements (egl) were not met:
Package egl was not found in the pkg-config search path.
Perhaps you should add the directory containing `egl.pc'
to the PKG_CONFIG_PATH environment variable
Package 'egl', required by 'world', not found
This commit fixes that by:
- Adjusting the configure.ac to add a --{enable,disable}-egl option
handled in the exact same way as --{enable,disable}-glx
- Adjusting the meson build logic in the same way.
- Adjusting src/dispatch_common.h to define PLATFORM_HAS_EGL correctly,
which allows to not include any EGL related header file if EGL
support is not enabled.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-rw-r--r-- | configure.ac | 33 | ||||
-rw-r--r-- | meson.build | 21 | ||||
-rw-r--r-- | meson_options.txt | 5 | ||||
-rw-r--r-- | src/dispatch_common.h | 8 |
4 files changed, 55 insertions, 12 deletions
diff --git a/configure.ac b/configure.ac index 31b0985..2dbecd9 100644 --- a/configure.ac +++ b/configure.ac @@ -88,11 +88,35 @@ AS_CASE([$enable_glx], [AC_MSG_ERROR([Invalid value "$enable_glx" for option "--enable-glx"])] ]) -# The remaining platform specific API for GL/GLES are enabled -# depending on the platform we're building for +AC_ARG_ENABLE([egl], + [AC_HELP_STRING([--enable-egl=@<:@auto,yes,no@:>@], [Enable EGL support @<:@default=auto@:>@])], + [enable_egl=$enableval], + [enable_egl=auto]) + +AS_CASE([$enable_egl], + [auto], [ + AS_CASE([$host_os], + [mingw*], [build_egl=no], + [darwin*], [build_egl=no], + [android*], [build_egl=no], + [build_egl=yes]) + ], + + [yes], [ + build_egl=yes + ], + + [no], [ + build_egl=no + ], + + [AC_MSG_ERROR([Invalid value "$enable_egl" for option "--enable-egl"])] +]) + +# The remaining platform specific API are enabled depending on the +# platform we're building for AS_CASE([$host_os], [mingw*], [ - build_egl=no build_wgl=yes has_znow=yes # On windows, the DLL has to have all of its functions @@ -108,7 +132,6 @@ AS_CASE([$host_os], ], [darwin*], [ - build_egl=no build_wgl=no build_apple=yes has_znow=no @@ -116,7 +139,6 @@ AS_CASE([$host_os], ], [ - build_egl=yes build_wgl=no has_znow=yes # On platforms with dlopen, we load everything dynamically and @@ -131,6 +153,7 @@ AM_CONDITIONAL(BUILD_EGL, test x$build_egl = xyes) if test x$build_egl = xyes; then PKG_CHECK_MODULES(EGL, [egl]) AC_DEFINE([BUILD_EGL], [1], [build EGL tests]) + AC_DEFINE(ENABLE_EGL, [1], [Whether EGL support is enabled]) fi AM_CONDITIONAL(BUILD_GLX, test x$build_glx = xyes) diff --git a/meson.build b/meson.build index 5435f45..226152e 100644 --- a/meson.build +++ b/meson.build @@ -51,26 +51,41 @@ elif enable_glx == 'no' build_glx = false endif +enable_egl = get_option('enable-egl') +if enable_egl == 'auto' + if host_system == 'windows' + build_egl = false + elif host_system == 'darwin' + build_egl = false + elif host_system == 'android' + build_egl = false + else + build_egl = true + endif +elif enable_egl == 'yes' + build_egl = true +elif enable_egl == 'no' + build_egl = false +endif + # The remaining platform specific API for GL/GLES are enabled # depending on the platform we're building for if host_system == 'windows' - build_egl = false build_apple = false build_wgl = true has_znow = true elif host_system == 'darwin' - build_egl = false build_apple = true build_wgl = false has_znow = false else - build_egl = true build_apple = false build_wgl = false has_znow = true endif conf.set10('ENABLE_GLX', build_glx) +conf.set10('ENABLE_EGL', build_egl) # Compiler flags, taken from the Xorg macros if cc.get_id() == 'msvc' diff --git a/meson_options.txt b/meson_options.txt index 18932f5..244476a 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -6,3 +6,8 @@ option('enable-glx', choices: [ 'auto', 'yes', 'no' ], value: 'auto', description: 'Enable GLX support') +option('enable-egl', + type: 'combo', + choices: [ 'auto', 'yes', 'no' ], + value: 'auto', + description: 'Enable EGL support') diff --git a/src/dispatch_common.h b/src/dispatch_common.h index e3277f7..e16771f 100644 --- a/src/dispatch_common.h +++ b/src/dispatch_common.h @@ -24,19 +24,19 @@ #include "config.h" #ifdef _WIN32 -#define PLATFORM_HAS_EGL 0 +#define PLATFORM_HAS_EGL ENABLE_EGL #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) -#define PLATFORM_HAS_EGL 1 +#define PLATFORM_HAS_EGL ENABLE_EGL #define PLATFORM_HAS_GLX 0 #define PLATFORM_HAS_WGL 0 #else -#define PLATFORM_HAS_EGL 1 +#define PLATFORM_HAS_EGL ENABLE_EGL #define PLATFORM_HAS_GLX ENABLE_GLX #define PLATFORM_HAS_WGL 0 #endif |