From patchwork Fri May 19 19:22:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Petazzoni X-Patchwork-Id: 764820 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wTyd42SKjz9s03 for ; Sat, 20 May 2017 05:23:04 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 28FB98A13B; Fri, 19 May 2017 19:23:01 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7K6OFwdT2NQu; Fri, 19 May 2017 19:22:58 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id 16D938A13F; Fri, 19 May 2017 19:22:58 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 0A9B51C00DD for ; Fri, 19 May 2017 19:22:57 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 01EEE30934 for ; Fri, 19 May 2017 19:22:57 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5+fJhrZCT21K for ; Fri, 19 May 2017 19:22:54 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail.free-electrons.com (mail.free-electrons.com [62.4.15.54]) by silver.osuosl.org (Postfix) with ESMTP id A57B23092A for ; Fri, 19 May 2017 19:22:53 +0000 (UTC) Received: by mail.free-electrons.com (Postfix, from userid 110) id E86BA2081B; Fri, 19 May 2017 21:22:50 +0200 (CEST) Received: from localhost (LFbn-1-6691-76.w90-120.abo.wanadoo.fr [90.120.129.76]) by mail.free-electrons.com (Postfix) with ESMTPSA id B59EB20768; Fri, 19 May 2017 21:22:40 +0200 (CEST) From: Thomas Petazzoni To: buildroot@buildroot.org Date: Fri, 19 May 2017 21:22:40 +0200 Message-Id: <1495221760-2083-1-git-send-email-thomas.petazzoni@free-electrons.com> X-Mailer: git-send-email 2.7.4 Cc: Thomas Petazzoni Subject: [Buildroot] [PATCH] libepoxy: make EGL support optional X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" This commit adds a patch to the libepoxy package to make the EGL support optional, which allows libepoxy to build with a pure OpenGL Mesa3D configuration (i.e without EGL/OpenGLES). Fixes: http://autobuild.buildroot.net/results/88774af2845e17cab021a72c8f3171fe30b3a1ff/ Signed-off-by: Thomas Petazzoni --- .../libepoxy/0002-Make-EGL-support-optional.patch | 200 +++++++++++++++++++++ package/libepoxy/libepoxy.mk | 2 + 2 files changed, 202 insertions(+) create mode 100644 package/libepoxy/0002-Make-EGL-support-optional.patch diff --git a/package/libepoxy/0002-Make-EGL-support-optional.patch b/package/libepoxy/0002-Make-EGL-support-optional.patch new file mode 100644 index 0000000..b114bb2 --- /dev/null +++ b/package/libepoxy/0002-Make-EGL-support-optional.patch @@ -0,0 +1,200 @@ +From 0511fc56e7017209ad18d16551ccaad05de9486c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 8 May 2017 23:12:49 +0200 +Subject: [PATCH] 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. + +Submitted-upstream: https://github.com/anholt/libepoxy/pull/123 +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 +-- +2.7.4 + diff --git a/package/libepoxy/libepoxy.mk b/package/libepoxy/libepoxy.mk index be8c55e..e72743d 100644 --- a/package/libepoxy/libepoxy.mk +++ b/package/libepoxy/libepoxy.mk @@ -12,6 +12,8 @@ LIBEPOXY_INSTALL_STAGING = YES LIBEPOXY_DEPENDENCIES = host-pkgconf xutil_util-macros LIBEPOXY_LICENSE = MIT LIBEPOXY_LICENSE_FILES = COPYING +# 0002-Make-EGL-support-optional.patch +LIBEPOXY_AUTORECONF = YES ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) LIBEPOXY_CONF_OPTS += --enable-egl