[Buildroot] [PATCH v2 5/7] mesa3d: modularize and bump to version 10.0.3
Arnout Vandecappelle
arnout at mind.be
Wed Feb 5 07:24:35 UTC 2014
On 04/02/14 19:15, Bernd Kuhls wrote:
> Signed-off-by: Bernd Kuhls <berndkuhls at hotmail.com>
The commit message should explain why the uclibc-locale patch and
AUTORECONF can be removed. It should also explain a bit better what
"modularize" means. And also explicitly warn that mesa3d no longer
depends on X and therefore must explicitly include the largefile
dependency. And maybe I'm forgetting something.
And of course: keep Spenser's SoB.
> ---
> v2: bump to version 10.0.3
> v1: - rebased Spenser Gilliland´s patch, which originally bumped
> version to 9.1.6 and removed mesa3d-uclibc-locale.patch:
> http://patchwork.ozlabs.org/patch/278303/
> - removed MESA3D_AUTORECONF=yes, not needed anymore
> - fixed bug in variable naming
> BR2_PACKAGE_MESA3D_DRI_DRIVERS_* -> BR2_PACKAGE_MESA3D_DRI_DRIVER_*
> preventing DRI drivers from being built
> - bump version to 10.0.2
>
> package/mesa3d/Config.in | 180 +++++++++++++++++++-
> package/mesa3d/mesa3d-uclibc-locale.patch | 56 ------
> package/mesa3d/mesa3d.mk | 120 ++++++++++---
> package/opengl/Config.in | 1 +
> package/opengl/libegl/libegl.mk | 4 +
> package/opengl/libgl/Config.in | 6 +
> package/opengl/libgl/libgl.mk | 21 +++
> package/opengl/libgles/libgles.mk | 4 +
> package/opengl/libopenvg/libopenvg.mk | 4 +
> .../xserver_xorg-server/xserver_xorg-server.mk | 4 +-
> 10 files changed, 317 insertions(+), 83 deletions(-)
> delete mode 100644 package/mesa3d/mesa3d-uclibc-locale.patch
> create mode 100644 package/opengl/libgl/Config.in
> create mode 100644 package/opengl/libgl/libgl.mk
>
> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> index 0ce168e..b797dfb 100644
> --- a/package/mesa3d/Config.in
> +++ b/package/mesa3d/Config.in
> @@ -1,14 +1,182 @@
> config BR2_PACKAGE_MESA3D
> bool "Mesa 3D Graphics Library"
> - select BR2_PACKAGE_XPROTO_GLPROTO
> - select BR2_PACKAGE_XLIB_LIBXXF86VM
> - select BR2_PACKAGE_XLIB_LIBXDAMAGE
> - select BR2_PACKAGE_XLIB_LIBXFIXES
> - select BR2_PACKAGE_XPROTO_DRI2PROTO
> select BR2_PACKAGE_LIBDRM
> select BR2_PACKAGE_EXPAT
> select BR2_PACKAGE_HOST_LIBXML2_PYTHON
> - depends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR
This removes the following implicit dependencies (from XORG7):
depends on BR2_USE_WCHAR
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on !BR2_PREFER_STATIC_LIB # dlopen in xlib_libX11
Are you sure they are no longer needed? Actually, the same is true for
the libdrm patch that removes the XORG7 dependency.
> + select BR2_PACKAGE_XPROTO_DRI2_PROTO if BR2_PACKAGE_XSERVER_XORG_SERVER
> + select BR2_PACKAGE_XPROTO_XF86DRIPROTO if BR2_PACKAGE_XSERVER_XORG_SERVER
> + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XSERVER_XORG_SERVER
> + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XSERVER_XORG_SERVER
> + select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_XSERVER_XORG_SERVER
> + select BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XSERVER_XORG_SERVER
> + select BR2_PACKAGE_LIBXCB if BR2_PACKAGE_XSERVER_XORG_SERVER
> depends on BR2_INSTALL_LIBSTDCPP
> + depends on BR2_LARGEFILE
> help
> Mesa 3D, an open-source implementation of the OpenGL specification.
> +
> + http://mesa3d.org
> +
> +if BR2_PACKAGE_MESA3D
> +
> +menu "libraries"
> +
> +config BR2_PACKAGE_MESA3D_GBM
> + depends on BR2_PACKAGE_UDEV
> + bool "gbm support"
> + help
> + Add support for Graphics Buffer Manager.
> +
> +config BR2_PACKAGE_MESA3D_XVMC
> + bool "xvmc support"
> + help
> + Add support for X Video Motion Compensation.
> +
> +config BR2_PACKAGE_MESA3D_VDPAU
> + bool "vdpau support"
> + help
> + Add support for Video Decode and Presentation API for Unix.
> +
> +endmenu
> +
> +menu "Drivers"
> +
> +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915
I think it would be better named BR2_PACKAGE_MESA3D_DRIVER_GALLIUM_I915
so that all drivers start with the same substring. On second thought:
since the configure option has it like this, it is better to keep it
similar to the configure option.
> + bool "Gallium i915 driver"
> + depends on BR2_i386 || BR2_x86_64
> + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> + select BR2_PACKAGE_LIBDRM_INTEL
> + help
> + Supports intel chips with Gallium. In most cases, the DRI i965 driver
> + should be used as it is better maintained by Intel.
> +
[snip a bunch of drivers]
> +
> +endmenu
> +
> +# The following hidden options inform gallium or dri driver selection.
I think it would be a bit clearer if these hidden options were defined
before the Drivers menu. Also, the ocmment should be "inform the .mk file
of gallium or dri driver selection".
> +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> + select BR2_PACKAGE_MESA3D_DRIVER
> + bool
> +
> +config BR2_PACKAGE_MESA3D_DRI_DRIVER
> + select BR2_PACKAGE_MESA3D_DRIVER
> + bool
> +
> +config BR2_PACKAGE_MESA3D_DRIVER
> + bool
> +
> +menu "API Support"
> +depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER || BR2_PACKAGE_MESA3D_DRI_DRIVER
Isn't it simpler to write "depends on BR2_PACKAGE_MESA3D_DRIVER" ?
> +
> +config BR2_PACKAGE_MESA3D_OPENGL
> + bool "OpenGL"
> + select BR2_PACKAGE_HAS_OPENGL
> + help
> + Use the Khronos OpenGL API. This is a desktop computer API and is not
> + normally implemented by embedded systems.
> +
> +config BR2_PACKAGE_MESA3D_EGL
> + bool "EGL"
> + select BR2_PACKAGE_MESA3D_GBM
> + select BR2_PACKAGE_HAS_OPENGL_EGL
> + help
> + Use the Khronos EGL APIs. EGL is a window manager for OpenGL applications
> + similar to GLX, for X, and WGL, for Windows.
> +
> + config BR2_PACKAGE_MESA3D_OPENGL_ES
> + bool "OpenGL ES"
> + select BR2_PACKAGE_HAS_OPENGL_ES
> + help
> + Use the Khronos OpenGL ES APIs. This is commonly used on embedded
> + systems and represents a subset of the OpenGL API.
> +
> +config BR2_PACKAGE_MESA3D_OPENVG
> + bool "OpenVG"
> + depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> + select BR2_PACKAGE_HAS_OPENVG
> + select BR2_PACKAGE_MESA3D_OPENGL_EGL
> + help
> + Use the Khronos OpenVG APIs. This is a 2D API commonly used on
> + embedded systems.
> +
> +config BR2_PACKAGE_MESA3D_OPENCL
> + bool "OpenCL"
> + depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
> + select BR2_PACKAGE_HAS_OPENCL
> + help
> + Use the Khronos OpenCL APIs. This is a GPU computation language
> + commonly used in GPGPU computing applications.
> +
> +endmenu
> +
> +endif
> +
> +comment "mesa3d depends on a toolchain with C++ and largefile support"
"mesa3d needs a toolchain w/ C++, largefile"
> + depends on !BR2_LARGEFILE || !BR2_INSTALL_LIBSTDCPP
> diff --git a/package/mesa3d/mesa3d-uclibc-locale.patch b/package/mesa3d/mesa3d-uclibc-locale.patch
> deleted file mode 100644
[snip]
> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
> index d4080d4..f12a1f5 100644
> --- a/package/mesa3d/mesa3d.mk
> +++ b/package/mesa3d/mesa3d.mk
> @@ -4,31 +4,15 @@
> #
> ################################################################################
>
> -MESA3D_VERSION = 7.10.3
> -MESA3D_SOURCE = MesaLib-$(MESA3D_VERSION).tar.gz
> -MESA3D_SITE = ftp://ftp.freedesktop.org/pub/mesa/older-versions/7.x/$(MESA3D_VERSION)
> +MESA3D_VERSION = 10.0.3
> +MESA3D_SOURCE = MesaLib-$(MESA3D_VERSION).tar.bz2
> +MESA3D_SITE = ftp://ftp.freedesktop.org/pub/mesa/$(MESA3D_VERSION)
> MESA3D_LICENSE = MIT, SGI, Khronos
> MESA3D_LICENSE_FILES = docs/license.html
>
> -MESA3D_AUTORECONF = YES
> MESA3D_INSTALL_STAGING = YES
>
> -MESA3D_CONF_OPT = \
> - --disable-egl \
> - --disable-glu \
> - --disable-glw \
> - --disable-glut \
> - --disable-gallium \
> - --with-driver=dri \
> - --with-dri-drivers=swrast \
> - --disable-static
> -
> MESA3D_DEPENDENCIES = \
> - xproto_glproto \
> - xlib_libXxf86vm \
> - xlib_libXdamage \
> - xlib_libXfixes \
> - xproto_dri2proto \
> libdrm \
> expat \
> host-xutil_makedepend \
> @@ -37,4 +21,102 @@ MESA3D_DEPENDENCIES = \
> host-bison \
> host-flex
>
> +MESA3D_CONF_OPT = \
> + --disable-static
If this is really needed, then it should depend on !PREFER_STATIC and
the comment should be extended.
> +
> +# Libraries
[snip]
> diff --git a/package/opengl/Config.in b/package/opengl/Config.in
> index ed81835..02010a9 100644
> --- a/package/opengl/Config.in
> +++ b/package/opengl/Config.in
> @@ -1,4 +1,5 @@
> source "package/opengl/libegl/Config.in"
> +source "package/opengl/libgl/Config.in"
The addition of libgl should be a separate patch.
> source "package/opengl/libgles/Config.in"
> source "package/opengl/libopenvg/Config.in"
> source "package/opengl/libopenmax/Config.in"
> diff --git a/package/opengl/libegl/libegl.mk b/package/opengl/libegl/libegl.mk
> index b2b74f1..8d8e6a4 100644
> --- a/package/opengl/libegl/libegl.mk
> +++ b/package/opengl/libegl/libegl.mk
> @@ -7,6 +7,10 @@
> LIBEGL_SOURCE =
> LIBEGL_DEPENDENCIES = $(call qstrip,$(BR2_PACKAGE_PROVIDES_OPENGL_EGL))
>
> +ifeq ($(BR2_PACKAGE_MESA3D_EGL),y)
> +LIBEGL_DEPENDENCIES += mesa3d
> +endif
We changed the way that this works. Instead, the mesa3d Config.in should
define BR2_PACKAGE_PROVIDES_OPENGL_EGL. Cfr. rpi-userland.
(I didn't look at the rest any more for lack of time).
Regards,
Arnout
> +
> ifeq ($(LIBEGL_DEPENDENCIES),)
> define LIBEGL_CONFIGURE_CMDS
> echo "No libEGL implementation selected. Configuration error."
> diff --git a/package/opengl/libgl/Config.in b/package/opengl/libgl/Config.in
> new file mode 100644
> index 0000000..5421c86
> --- /dev/null
> +++ b/package/opengl/libgl/Config.in
> @@ -0,0 +1,6 @@
> +config BR2_PACKAGE_HAS_OPENGL_GL
> + bool
> +
> +config BR2_PACKAGE_PROVIDES_OPENGL_GL
> + depends on BR2_PACKAGE_HAS_OPENGL_GL
> + string
> diff --git a/package/opengl/libgl/libgl.mk b/package/opengl/libgl/libgl.mk
> new file mode 100644
> index 0000000..f95a959
> --- /dev/null
> +++ b/package/opengl/libgl/libgl.mk
> @@ -0,0 +1,21 @@
> +################################################################################
> +#
> +# libgl
> +#
> +################################################################################
> +
> +LIBGL_SOURCE =
> +LIBGL_DEPENDENCIES = $(call qstrip,$(BR2_PACKAGE_PROVIDES_OPENGL_GL))
> +
> +ifeq ($(BR2_PACKAGE_MESA_OPENGL),y)
> +LIBGL_DEPENDENCIES += mesa3d
> +endif
> +
> +ifeq ($(LIBGL_DEPENDENCIES),)
> +define LIBGL_CONFIGURE_CMDS
> + echo "No libGL implementation selected. Configuration error."
> + exit 1
> +endef
> +endif
> +
> +$(eval $(generic-package))
> diff --git a/package/opengl/libgles/libgles.mk b/package/opengl/libgles/libgles.mk
> index 0dcbaa7..5c1e6d4 100644
> --- a/package/opengl/libgles/libgles.mk
> +++ b/package/opengl/libgles/libgles.mk
> @@ -7,6 +7,10 @@
> LIBGLES_SOURCE =
> LIBGLES_DEPENDENCIES = $(call qstrip,$(BR2_PACKAGE_PROVIDES_OPENGL_ES))
>
> +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_ES),y)
> +LIBGLES_DEPENDENCIES += mesa3d
> +endif
> +
> ifeq ($(LIBGLES_DEPENDENCIES),)
> define LIBGLES_CONFIGURE_CMDS
> echo "No libGLES implementation selected. Configuration error."
> diff --git a/package/opengl/libopenvg/libopenvg.mk b/package/opengl/libopenvg/libopenvg.mk
> index ffd9d68..83c600b 100644
> --- a/package/opengl/libopenvg/libopenvg.mk
> +++ b/package/opengl/libopenvg/libopenvg.mk
> @@ -7,6 +7,10 @@
> LIBOPENVG_SOURCE =
> LIBOPENVG_DEPENDENCIES = $(call qstrip,$(BR2_PACKAGE_PROVIDES_OPENVG))
>
> +ifeq ($(BR2_PACKAGE_MESA3D_OPENVG),y)
> +LIBOPENVG_DEPENDENCIES += mesa3d
> +endif
> +
> ifeq ($(LIBOPENVG_DEPENDENCIES),)
> define LIBOPENVG_CONFIGURE_CMDS
> echo "No libOpenVG implementation selected. Configuration error."
> diff --git a/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk b/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk
> index 4089aab..f5a4db6 100644
> --- a/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk
> +++ b/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk
> @@ -99,7 +99,7 @@ else # modular
> XSERVER_XORG_SERVER_CONF_OPT += --disable-kdrive --disable-xfbdev
> endif
>
> -ifeq ($(BR2_PACKAGE_MESA3D),y)
> +ifeq ($(BR2_PACKAGE_MESA3D_DRIVER),y)
> XSERVER_XORG_SERVER_DEPENDENCIES += mesa3d xproto_xf86driproto
> else
> XSERVER_XORG_SERVER_CONF_OPT += --disable-dri
> @@ -172,7 +172,7 @@ ifneq ($(BR2_PACKAGE_XLIB_LIBDMX),y)
> XSERVER_XORG_SERVER_CONF_OPT += --disable-dmx
> endif
>
> -ifeq ($(BR2_PACKAGE_MESA3D),y)
> +ifeq ($(BR2_PACKAGE_MESA3D_DRIVER),y)
> XSERVER_XORG_SERVER_CONF_OPT += --enable-glx
> else
> XSERVER_XORG_SERVER_CONF_OPT += --disable-glx
>
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
More information about the buildroot
mailing list