[Buildroot] [PATCH 03/10 v7] package/mesa3d-headers: new package
Nicolas Serafini
nicolas.serafini at sensefly.com
Wed Feb 11 14:06:02 UTC 2015
Yann, all,
I have done some build tests with the nvidia-tegra packages and opengl
support.
I was able to build QT5 with opengl without problem but I get errors
with QT4.
This is a known problem of QT4 with the inclusion of eglplatform.h
inside which there is an inclusion of X11 headers.
The result is that we have some conflicting #define. For me this can be
resolved by adding several #undef at the end of eglplatform.h.
Here is the end of my eglplatform.h header
typedef khronos_int32_t EGLint;
#undef None
#undef KeyPress
#undef KeyRelease
#undef FocusIn
#undef FocusOut
#undef FontChange
#undef CursorShape
#undef Bool
#undef Status
#undef Unsorted
#undef GrayScale
#undef Expose
#endif /* __eglplatform_h */
Best regards,
Nicolas
On Tue, 10 Feb 2015 21:01:10 +0100
"Yann E. MORIN" <yann.morin.1998 at free.fr> wrote:
> Some OpenGL/EGL/GLES/VG providers do not provide the corresponding
> headers, and rely on using "the headers provided by the distribution".
>
> In our case, we can not rely on such headers, because we are not a
> distribution, and we have no way to provide those headers (not even
> speaking about relying on the headers provided by hte host
> distribution, because they might well not be installed at all).
>
> Also, we can not rely on another package to provide those headers,
> because we can only have one provider enabled in any configuration.
>
> The Khronos group provides such headers, and they are the reference
> headers, but we can not realy use them:
>
> - most of them are not packaged: they are not versioned and not
> provided in a tarball, but as separately downloadable files;
>
> - those headers are anyway incomplete: there are headers not
> provided by Khronos, like GL.h
>
> Instead, we rely on mesa3d to provide those headers: mesa3d has all
> the headers we need.
>
> Modifying the existing mesa3d package would not be easy; we'd have to
> differentiate whther we need only the headers or the full package. The
> meas3d Config.in and .mk are already quite non-trivial that adding
> such a feature would render them even more illegible.
>
> So, we introduce mea3d-headers as a new package, that is in fact just
> mesa3d with a much simplified Config.in and .mk, that other OpenXXX
> providers may select if they do not provide the OpenXXX headers.
>
> Note: we're not installing GLES3 headers, because what Buildroot
> currently calls libgles is in fact libgles2; we have no way to specify
> that we have libgles3. So, we just install headers for GLES and GLES2.
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
>
> ---
> Notes:
>
> It should not be possible to select both mesa3d *and* mesa3d-headers
> at the same time, but it is difficult to foresee the multiple
> combinations we may have, due to poor understanding on how binary
> drivers may behave and what they may require, as well as my own poor
> understanding of the GL stack(s).
>
> So I decided to just print a warning in that case, and just depend on
> mesa3d, which would ultimately provide the headers we are interested
> in anyway. This can be turned into an error if preferred.
> ---
> package/Config.in | 1 +
> package/mesa3d-headers/Config.in | 8 ++++
> package/mesa3d-headers/mesa3d-headers.hash | 1 +
> package/mesa3d-headers/mesa3d-headers.mk | 60
> ++++++++++++++++++++++++++++++
> package/mesa3d/mesa3d.mk | 1 + 5 files changed, 71
> insertions(+) create mode 100644 package/mesa3d-headers/Config.in
> create mode 120000 package/mesa3d-headers/mesa3d-headers.hash
> create mode 100644 package/mesa3d-headers/mesa3d-headers.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index 757237e..f25886a 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -211,6 +211,7 @@ endif
> source "package/linux-fusion/Config.in"
> source "package/lite/Config.in"
> source "package/mesa3d/Config.in"
> + source "package/mesa3d-headers/Config.in"
> source "package/ocrad/Config.in"
> source "package/psplash/Config.in"
> source "package/sawman/Config.in"
> diff --git a/package/mesa3d-headers/Config.in
> b/package/mesa3d-headers/Config.in new file mode 100644
> index 0000000..a64fc0c
> --- /dev/null
> +++ b/package/mesa3d-headers/Config.in
> @@ -0,0 +1,8 @@
> +config BR2_PACKAGE_MESA3D_HEADERS
> + bool
> + help
> + Mesa 3D, an open-source implementation of the OpenGL
> specification. +
> + This package only installs headers needed by other
> packages. +
> + http://mesa3d.org
> diff --git a/package/mesa3d-headers/mesa3d-headers.hash
> b/package/mesa3d-headers/mesa3d-headers.hash new file mode 120000
> index 0000000..137d0be
> --- /dev/null
> +++ b/package/mesa3d-headers/mesa3d-headers.hash
> @@ -0,0 +1 @@
> +../mesa3d/mesa3d.hash
> \ No newline at end of file
> diff --git a/package/mesa3d-headers/mesa3d-headers.mk
> b/package/mesa3d-headers/mesa3d-headers.mk new file mode 100644
> index 0000000..acfc9a3
> --- /dev/null
> +++ b/package/mesa3d-headers/mesa3d-headers.mk
> @@ -0,0 +1,60 @@
> +################################################################################
> +#
> +# mesa3d-headers
> +#
> +################################################################################
> +
> +# mesa3d-headers is inherently incompatible with mesa3d, so if mesa3d
> +# is enabled, just rely on it.
> +
> +ifeq ($(BR2_PACKAGE_MESA3D),y)
> +
> +ifeq ($(BR2_PACKAGE_MESA3D_HEADERS),y)
> +$(warning mesa3d-headers enabled, but mesa3d enabled too)
> +endif
> +
> +MESA3D_HEADERS_SOURCE =
> +MESA3D_HEADERS_DEPENDENCIES = mesa3d
> +
> +else # mesa3d
> +
> +# Not possible to directly refer to mesa3d variables, because of
> first/second +# expansion trickery...
> +MESA3D_HEADERS_VERSION = 10.4.4
> +MESA3D_HEADERS_SOURCE = MesaLib-$(MESA3D_HEADERS_VERSION).tar.bz2
> +MESA3D_HEADERS_SITE =
> ftp://ftp.freedesktop.org/pub/mesa/$(MESA3D_HEADERS_VERSION)
> +MESA3D_HEADERS_LICENSE = MIT, SGI, Khronos
> +MESA3D_HEADERS_LICENSE_FILES = docs/license.html +
> +# Only installs header files
> +MESA3D_HEADERS_INSTALL_STAGING = YES
> +MESA3D_HEADERS_INSTALL_TARGET = NO
> +
> +MESA3D_HEADERS_DIRS = KHR
> +
> +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y)
> +MESA3D_HEADERS_DIRS += GL
> +endif
> +
> +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y)
> +MESA3D_HEADERS_DIRS += EGL
> +endif
> +
> +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y)
> +MESA3D_HEADERS_DIRS += GLES GLES2
> +endif
> +
> +ifeq ($(BR2_PACKAGE_HAS_LIBOPENVG),y)
> +MESA3D_HEADERS_DIRS += VG
> +endif
> +
> +define MESA3D_HEADERS_INSTALL_STAGING_CMDS
> + $(foreach d,$(MESA3D_HEADERS_DIRS),\
> + for h in $(@D)/include/$(d)/*.h; do \
> + $(INSTALL) -D -m 0644 $${h}
> $(STAGING_DIR)/usr/include/$(d)/$$(basename $${h}) || exit 1; \
> + done$(sep))
> +endef
> +
> +endif # !mesa3d
> +
> +$(eval $(generic-package))
> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
> index eb38a9a..ca98524 100644
> --- a/package/mesa3d/mesa3d.mk
> +++ b/package/mesa3d/mesa3d.mk
> @@ -4,6 +4,7 @@
> #
> ################################################################################
>
> +# When updating the version, please also update mesa3d-headers
> MESA3D_VERSION = 10.4.4
> MESA3D_SOURCE = MesaLib-$(MESA3D_VERSION).tar.bz2
> MESA3D_SITE = ftp://ftp.freedesktop.org/pub/mesa/$(MESA3D_VERSION)
--
Nicolas Serafini
R&D Embedded Software Engineer
www.sensefly.com
Route de Genève 38
1033 Cheseaux-Lausanne
Switzerland
More information about the buildroot
mailing list