From 0511fc56e7017209ad18d16551ccaad05de9486c Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Mon, 8 May 2017 23:12:49 +0200 Subject: [PATCH 1/3] 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 --- configure.ac | 33 ++++++++++++++++++++++++++++----- meson.build | 21 ++++++++++++++++++--- meson_options.txt | 5 +++++ 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 From 21feea047e2d0af75a02454a06139afc485ebba7 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Tue, 6 Jun 2017 10:39:07 +0100 Subject: [PATCH 2/3] build: Enable EGL on Android It's the only platform specific API it has. --- configure.ac | 1 - meson.build | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 2dbecd9..4d6c294 100644 --- a/configure.ac +++ b/configure.ac @@ -98,7 +98,6 @@ AS_CASE([$enable_egl], AS_CASE([$host_os], [mingw*], [build_egl=no], [darwin*], [build_egl=no], - [android*], [build_egl=no], [build_egl=yes]) ], diff --git a/meson.build b/meson.build index ab4c05e..b115dc0 100644 --- a/meson.build +++ b/meson.build @@ -60,7 +60,7 @@ if enable_egl == 'auto' elif host_system == 'darwin' build_egl = false elif host_system == 'android' - build_egl = false + build_egl = true else build_egl = true endif From 3103a273cb400fe7a94b13e6e8f9d28dc13b3cdc Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Tue, 6 Jun 2017 10:40:36 +0100 Subject: [PATCH 3/3] ci: Check build with EGL support disabled --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 730b09d..dfeb2f5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,3 +29,4 @@ before_script: script: - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker run withgit /bin/sh -c "cd /root && CC=$CC ./epoxy-run-tests.sh" ; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker run withgit /bin/sh -c "cd /root && CC=$CC ./epoxy-run-tests.sh -Denable-glx=no" ; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then docker run withgit /bin/sh -c "cd /root && CC=$CC ./epoxy-run-tests.sh -Denable-egl=no" ; fi