diff mbox series

[RFC,v2,6/7] package/mesa3d: switch build system to meson

Message ID 20190417214348.15685-6-romain.naour@smile.fr
State Superseded
Headers show
Series [RFC,v2,1/7] package/mesa3d: rename OSMesa option | expand

Commit Message

Romain Naour April 17, 2019, 9:43 p.m. UTC
From: Bernd Kuhls <bernd.kuhls@t-online.de>

Add a new patch to remove host-python-mako dependency [1].

Update patches for meson:
0002-configure.ac-invert-order-for-wayland-scanner-check.patch
0003-set-LIBCLC_INCLUDEDIR.patch

Disable unused options that are set to "auto" mode.
(valgrind, gallium-omx, power8).

Remove --disable-static option since there is no meson equivalent.
Remove --disable-mangling since it's not yet supported by meson.

Use r100 instead of radeon as DRI name for BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON.

[1] http://patchwork.ozlabs.org/patch/1084248/

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
---
patch 0002-meson-use-generated-files-if-already-present-in-the-.patch may not work at 100%.
---
 ...vert-order-for-wayland-scanner-check.patch |  51 --------
 ...ted-files-if-already-present-in-the-.patch |  81 +++++++++++++
 ...t-proper-value-for-LIBCLC_INCLUDEDIR.patch |  39 ++++++
 .../mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch   |  37 ------
 ...d-scanner-provided-by-wayland-scanne.patch |  52 ++++++++
 package/mesa3d/Config.in                      |   3 +-
 package/mesa3d/mesa3d.mk                      | 113 ++++++++----------
 7 files changed, 225 insertions(+), 151 deletions(-)
 delete mode 100644 package/mesa3d/0002-configure.ac-invert-order-for-wayland-scanner-check.patch
 create mode 100644 package/mesa3d/0002-meson-use-generated-files-if-already-present-in-the-.patch
 create mode 100644 package/mesa3d/0003-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch
 delete mode 100644 package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch
 create mode 100644 package/mesa3d/0004-meson-use-wayland-scanner-provided-by-wayland-scanne.patch

Comments

Peter Seiderer April 25, 2019, 8:56 p.m. UTC | #1
Hello Bernd, Romain,

On Wed, 17 Apr 2019 23:43:47 +0200, Romain Naour <romain.naour@smile.fr> wrote:

> From: Bernd Kuhls <bernd.kuhls@t-online.de>
>
> Add a new patch to remove host-python-mako dependency [1].
>
> Update patches for meson:
> 0002-configure.ac-invert-order-for-wayland-scanner-check.patch
> 0003-set-LIBCLC_INCLUDEDIR.patch
>
> Disable unused options that are set to "auto" mode.
> (valgrind, gallium-omx, power8).
>
> Remove --disable-static option since there is no meson equivalent.
> Remove --disable-mangling since it's not yet supported by meson.
>
> Use r100 instead of radeon as DRI name for BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON.
>
> [1] http://patchwork.ozlabs.org/patch/1084248/
>
> Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> Signed-off-by: Romain Naour <romain.naour@smile.fr>
> ---
> patch 0002-meson-use-generated-files-if-already-present-in-the-.patch may not work at 100%.
> ---
>  ...vert-order-for-wayland-scanner-check.patch |  51 --------
>  ...ted-files-if-already-present-in-the-.patch |  81 +++++++++++++
>  ...t-proper-value-for-LIBCLC_INCLUDEDIR.patch |  39 ++++++
>  .../mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch   |  37 ------
>  ...d-scanner-provided-by-wayland-scanne.patch |  52 ++++++++
>  package/mesa3d/Config.in                      |   3 +-
>  package/mesa3d/mesa3d.mk                      | 113 ++++++++----------
>  7 files changed, 225 insertions(+), 151 deletions(-)
>  delete mode 100644 package/mesa3d/0002-configure.ac-invert-order-for-wayland-scanner-check.patch
>  create mode 100644 package/mesa3d/0002-meson-use-generated-files-if-already-present-in-the-.patch
>  create mode 100644 package/mesa3d/0003-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch
>  delete mode 100644 package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch
>  create mode 100644 package/mesa3d/0004-meson-use-wayland-scanner-provided-by-wayland-scanne.patch
>
> diff --git a/package/mesa3d/0002-configure.ac-invert-order-for-wayland-scanner-check.patch b/package/mesa3d/0002-configure.ac-invert-order-for-wayland-scanner-check.patch
> deleted file mode 100644
> index 5135528795..0000000000
> --- a/package/mesa3d/0002-configure.ac-invert-order-for-wayland-scanner-check.patch
> +++ /dev/null
> @@ -1,51 +0,0 @@
> -From ef96bac7cbbb11b98606864ead0f731dd5b71d5a Mon Sep 17 00:00:00 2001
> -From: Gustavo Zacarias <gustavo@zacarias.com.ar>
> -Date: Thu, 17 Nov 2016 15:36:54 -0300
> -Subject: [PATCH] configure.ac: invert order for wayland-scanner check
> -
> -When cross-compiling the .pc file might point to the wrong
> -wayland-scanner binary (target rather than host) resulting in a
> -non-executable and wrong scanner.
> -Try searching the PATH first, and if that fails fall back into
> -pkg-config.
> -
> -[Vincent: tweak patch for 17.1.1 version]
> -
> -Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
> -Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
> -[Romain: rebase on 18.1]
> -Signed-off-by: Romain Naour <romain.naour@gmail.com>
> -[Bernd rebase on 18.3]
> -Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> ----
> - configure.ac | 8 ++++----
> - 1 file changed, 4 insertions(+), 4 deletions(-)
> -
> -diff --git a/configure.ac b/configure.ac
> -index f1fbdcc6c7..dcf87e7dd6 100644
> ---- a/configure.ac
> -+++ b/configure.ac
> -@@ -1841,17 +1841,16 @@
> -         fi
> -         WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
> -
> --        PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner],
> -+        AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:])
> -+        if test "x$WAYLAND_SCANNER" = x; then
> -+                PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner],
> -                           WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`,
> -                           WAYLAND_SCANNER='')
> -+        fi
> -         PKG_CHECK_EXISTS([wayland-scanner >= 1.15],
> -                           AC_SUBST(SCANNER_ARG, 'private-code'),
> -                           AC_SUBST(SCANNER_ARG, 'code'))
> -
> --        if test "x$WAYLAND_SCANNER" = x; then
> --            AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:])
> --        fi
> --
> -         if test "x$WAYLAND_SCANNER" = "x:"; then
> -                 AC_MSG_ERROR([wayland-scanner is needed to compile the wayland platform])
> -         fi
> ---
> -2.14.3
> diff --git a/package/mesa3d/0002-meson-use-generated-files-if-already-present-in-the-.patch b/package/mesa3d/0002-meson-use-generated-files-if-already-present-in-the-.patch
> new file mode 100644
> index 0000000000..0350d07b08
> --- /dev/null
> +++ b/package/mesa3d/0002-meson-use-generated-files-if-already-present-in-the-.patch
> @@ -0,0 +1,81 @@
> +From 56a9b8964435e88ad869a149cc8f087eea7c4aa6 Mon Sep 17 00:00:00 2001
> +From: Romain Naour <romain.naour@smile.fr>
> +Date: Sun, 14 Apr 2019 19:57:25 +0200
> +Subject: [PATCH] meson: use generated files if already present in the release
> + archive
> +
> +meson buildsystem behaviour doesn't is not the same as for autotools
> +buildsystem about generated files. With autotools if a generated file
> +exist it is not regenerated but with meson it is unconditionnaly
> +generated. These files are provided as part of a release archive.
> +
> +Modify the custom_target using ir_expression_operation.py in order to
> +use generated files present in the release archive.
> +
> +The python script ir_expression_operation.py used to build the header
> +file ir_expression_operation_constant.h is using python mako module.
> +This module must be installed in order to be able to build mesa from
> +the git repository.
> +
> +Signed-off-by: Romain Naour <romain.naour@smile.fr>
> +---
> + meson.build                   | 8 +++++++-
> + src/compiler/glsl/meson.build | 2 ++
> + src/compiler/meson.build      | 1 +
> + 3 files changed, 10 insertions(+), 1 deletion(-)
> +
> +diff --git a/meson.build b/meson.build
> +index 53d02e31097..6c4f1508855 100644
> +--- a/meson.build
> ++++ b/meson.build
> +@@ -728,8 +728,14 @@ from distutils.version import StrictVersion
> + import mako
> + assert StrictVersion(mako.__version__) > StrictVersion("0.8.0")
> +   ''')
> ++
> ++# Check if we build from a release archive that already contains pregenerated source files.
> ++has_pregenerated_files = run_command('[', '-f', join_paths(meson.source_root(), 'src/mesa/main/format_unpack.c'), ']')
> ++
> + if has_mako.returncode() != 0
> +-  error('Python (3.x) mako module >= 0.8.0 required to build mesa.')
> ++  if has_pregenerated_files.returncode() != 0
> ++    error('Python (3.x) mako module >= 0.8.0 required to build mesa.')
> ++  endif
> + endif
> +
> + if cc.get_id() == 'gcc' and cc.version().version_compare('< 4.4.6')
> +diff --git a/src/compiler/glsl/meson.build b/src/compiler/glsl/meson.build
> +index 8096f2d048e..3b3ec274785 100644
> +--- a/src/compiler/glsl/meson.build
> ++++ b/src/compiler/glsl/meson.build
> +@@ -43,6 +43,7 @@ ir_expression_operation_constant_h = custom_target(
> +   output : 'ir_expression_operation_constant.h',
> +   command : [prog_python, '@INPUT@', 'constant'],
> +   capture : true,
> ++  build_always_stale : false,
> + )
> +
> + ir_expression_operation_strings_h = custom_target(
> +@@ -51,6 +52,7 @@ ir_expression_operation_strings_h = custom_target(
> +   output : 'ir_expression_operation_strings.h',
> +   command : [prog_python, '@INPUT@', 'strings'],
> +   capture : true,
> ++  build_always_stale : false,
> + )
> +
> + float64_glsl_h = custom_target(
> +diff --git a/src/compiler/meson.build b/src/compiler/meson.build
> +index 0f8f3c12966..ff254b65051 100644
> +--- a/src/compiler/meson.build
> ++++ b/src/compiler/meson.build
> +@@ -42,6 +42,7 @@ ir_expression_operation_h = custom_target(
> +   output : 'ir_expression_operation.h',
> +   command : [prog_python, '@INPUT@', 'enum'],
> +   capture : true,
> ++  build_always_stale : false,
> + )
> +
> + libcompiler = static_library(
> +--
> +2.20.1
> +
> diff --git a/package/mesa3d/0003-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch b/package/mesa3d/0003-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch
> new file mode 100644
> index 0000000000..072d79a213
> --- /dev/null
> +++ b/package/mesa3d/0003-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch
> @@ -0,0 +1,39 @@
> +From 7b46756a99aca7f27a45c3b99460f088570f6f53 Mon Sep 17 00:00:00 2001
> +From: Romain Naour <romain.naour@smile.fr>
> +Date: Wed, 17 Apr 2019 23:07:42 +0200
> +Subject: [PATCH] meson: Set proper value for LIBCLC_INCLUDEDIR
> +
> +LIBCLC_INCLUDEDIR is the location where mesa3d OpenCL implementation
> +will look for OpenCL "headers" on the target, when building the OpenCL
> +kernels.
> +
> +The value returned by pkg-config for includedir is relevant when
> +cross-compiling, on the build machine. But in this specific case, we
> +really need a value that is valid on the target.
> +
> +Those headers are installed by the libclc package in /usr/share so
> +that they are not removed by Buildroot target-finalize logic.
> +
> +Based on the patch for autotools provided by Valentin Korenblit.
> +
> +Signed-off-by: Romain Naour <romain.naour@smile.fr>
> +---
> + src/gallium/state_trackers/clover/meson.build | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/src/gallium/state_trackers/clover/meson.build b/src/gallium/state_trackers/clover/meson.build
> +index 62ac5f5278d..ecdeb39669c 100644
> +--- a/src/gallium/state_trackers/clover/meson.build
> ++++ b/src/gallium/state_trackers/clover/meson.build
> +@@ -49,7 +49,7 @@ libclllvm = static_library(
> +   include_directories : clover_incs,
> +   cpp_args : [
> +     cpp_vis_args,
> +-    '-DLIBCLC_INCLUDEDIR="@0@/"'.format(dep_clc.get_pkgconfig_variable('includedir')),
> ++    '-DLIBCLC_INCLUDEDIR="/usr/share"',
> +     '-DLIBCLC_LIBEXECDIR="@0@/"'.format(dep_clc.get_pkgconfig_variable('libexecdir')),
> +     '-DCLANG_RESOURCE_DIR="@0@"'.format(join_paths(
> +       dep_llvm.get_configtool_variable('libdir'), 'clang',
> +--
> +2.20.1
> +
> diff --git a/package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch b/package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch
> deleted file mode 100644
> index 42ae826a36..0000000000
> --- a/package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -From 94bceeb621e36f3188c6246a763def8695526578 Mon Sep 17 00:00:00 2001
> -From: Valentin Korenblit <valentinkorenblit@gmail.com>
> -Date: Sat, 20 Oct 2018 10:56:23 +0200
> -Subject: [PATCH] Set proper value for LIBCLC_INCLUDEDIR
> -
> -LIBCLC_INCLUDEDIR is the location where mesa3d OpenCL implementation
> -will look for OpenCL "headers" on the target, when building the OpenCL
> -kernels.
> -
> -The value returned by pkg-config for includedir is relevant when
> -cross-compiling, on the build machine. But in this specific case, we
> -really need a value that is valid on the target.
> -
> -Those headers are installed by the libclc package in /usr/share so
> -that they are not removed by Buildroot target-finalize logic.
> -
> -Signed-off-by: Valentin Korenblit <valentinkorenblit@gmail.com>
> ----
> - configure.ac | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/configure.ac b/configure.ac
> -index 864dcae..cc2390b 100644
> ---- a/configure.ac
> -+++ b/configure.ac
> -@@ -2429,7 +2429,7 @@ if test "x$enable_opencl" = xyes; then
> -                     PKG_CONFIG_PATH environment variable.
> -                     By default libclc.pc is installed to /usr/local/share/pkgconfig/])
> -     else
> --        LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
> -+        LIBCLC_INCLUDEDIR="/usr/share"
> -         LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
> -         AC_SUBST([LIBCLC_INCLUDEDIR])
> -         AC_SUBST([LIBCLC_LIBEXECDIR])
> ---
> -2.7.4
> -
> diff --git a/package/mesa3d/0004-meson-use-wayland-scanner-provided-by-wayland-scanne.patch b/package/mesa3d/0004-meson-use-wayland-scanner-provided-by-wayland-scanne.patch
> new file mode 100644
> index 0000000000..784b27c4a2
> --- /dev/null
> +++ b/package/mesa3d/0004-meson-use-wayland-scanner-provided-by-wayland-scanne.patch
> @@ -0,0 +1,52 @@
> +From 0e107f7bac8d84d8fb2bb5b83bfb4474348a82c1 Mon Sep 17 00:00:00 2001
> +From: Romain Naour <romain.naour@smile.fr>
> +Date: Wed, 17 Apr 2019 22:47:05 +0200
> +Subject: [PATCH] meson: use wayland-scanner provided by wayland-scanner-path
> +
> +When cross-compiling the .pc file might point to the wrong
> +wayland-scanner binary (target rather than host) resulting in a
> +non-executable and wrong scanner.
> +First try by using the path provided by wayland-scanner-path,
> +and if that fails fall back into pkg-config.
> +
> +Based on the patch for autotools provided by Gustavo Zacarias.
> +
> +Signed-off-by: Romain Naour <romain.naour@smile.fr>
> +---
> + meson.build       | 5 ++++-
> + meson_options.txt | 6 ++++++
> + 2 files changed, 10 insertions(+), 1 deletion(-)
> +
> +diff --git a/meson.build b/meson.build
> +index 6c4f1508855..ef0532b2cfb 100644
> +--- a/meson.build
> ++++ b/meson.build
> +@@ -1319,7 +1319,10 @@ endif
> +
> + if with_platform_wayland
> +   dep_wl_scanner = dependency('wayland-scanner', native: true)
> +-  prog_wl_scanner = find_program(dep_wl_scanner.get_pkgconfig_variable('wayland_scanner'))
> ++  prog_wl_scanner = get_option('wayland-scanner-path')
> ++  if prog_wl_scanner == ''
> ++    prog_wl_scanner = find_program(dep_wl_scanner.get_pkgconfig_variable('wayland_scanner'))
> ++  endif
> +   if dep_wl_scanner.version().version_compare('>= 1.15')
> +     wl_scanner_arg = 'private-code'
> +   else
> +diff --git a/meson_options.txt b/meson_options.txt
> +index ccf70659ff7..59ff8df8337 100644
> +--- a/meson_options.txt
> ++++ b/meson_options.txt
> +@@ -324,3 +324,9 @@ option(
> +   value : true,
> +   description : 'Enable direct rendering in GLX and EGL for DRI',
> + )
> ++option(
> ++  'wayland-scanner-path',
> ++  type : 'string',
> ++  value : '',
> ++  description : 'Locations to wayland-scanner binary. Default: use path from pkg-config'
> ++)
> +--
> +2.20.1
> +
> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
> index eba218efb2..df24acea21 100644
> --- a/package/mesa3d/Config.in
> +++ b/package/mesa3d/Config.in
> @@ -87,8 +87,7 @@ config BR2_PACKAGE_MESA3D_NEEDS_XA
>  	bool
>
>  # Quote from mesa3d meson.build: "kmsro driver requires one or more
> -# renderonly drivers (vc4, etnaviv, freedreno)". But only vc4 support
> -# is available by using the (deprecated) autotools build system.
> +# renderonly drivers (vc4, etnaviv, freedreno)".
>  config BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
>  	bool
>
> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
> index c8ca9a0d0f..5244545584 100644
> --- a/package/mesa3d/mesa3d.mk
> +++ b/package/mesa3d/mesa3d.mk
> @@ -25,27 +25,19 @@ MESA3D_DEPENDENCIES = \
>  	libdrm \
>  	zlib
>
> -# Disable assembly usage.
> -MESA3D_CONF_OPTS = --disable-asm
> -
> -# autotools are deprecated in favour of meson, for now force autotools
> -MESA3D_CONF_OPTS += --enable-autotools
> -
> -# Disable static, otherwise configure will fail with: "Cannot enable both static
> -# and shared."
> -ifeq ($(BR2_SHARED_STATIC_LIBS),y)
> -MESA3D_CONF_OPTS += --disable-static
> -endif
> +MESA3D_CONF_OPTS = \
> +	-Dasm=false \
> +	-Dgallium-omx=disabled \
> +	-Dpower8=false \
> +	-Dvalgrind=false
>
>  ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
>  MESA3D_DEPENDENCIES += host-llvm llvm
> -MESA3D_CONF_OPTS += \
> -	--with-llvm-prefix=$(STAGING_DIR)/usr \
> -	--enable-llvm-shared-libs \
> -	--enable-llvm
> +MESA3D_CONF_ENV += LLVM_CONFIG=$(STAGING_DIR)/usr/bin/llvm-config
> +MESA3D_CONF_OPTS += -Dllvm=true
>  else
>  # Avoid automatic search of llvm-config
> -MESA3D_CONF_OPTS += --disable-llvm
> +MESA3D_CONF_OPTS += -Dllvm=false
>  endif
>
>  # Disable opencl-icd: OpenCL lib will be named libOpenCL instead of
> @@ -53,11 +45,9 @@ endif
>  ifeq ($(BR2_PACKAGE_MESA3D_OPENCL),y)
>  MESA3D_PROVIDES += libopencl
>  MESA3D_DEPENDENCIES += clang libclc
> -MESA3D_CONF_OPTS += --enable-opencl \
> -	--disable-opencl-icd \
> -	--with-clang-libdir=$(STAGING_DIR)/usr/lib
> +MESA3D_CONF_OPTS += -Dgallium-opencl=standalone
>  else
> -MESA3D_CONF_OPTS += --disable-opencl
> +MESA3D_CONF_OPTS += -Dgallium-opencl=disabled
>  endif
>
>  ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS),y)
> @@ -82,16 +72,17 @@ MESA3D_DEPENDENCIES += \
>  	xlib_libXxf86vm \
>  	xorgproto \
>  	libxcb
> -MESA3D_CONF_OPTS += --enable-glx --disable-mangling
> +# Disable-mangling not yet supported by meson build system.
> +MESA3D_CONF_OPTS += -Dglx=auto
>  ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_XA),y)
> -MESA3D_CONF_OPTS += --enable-xa
> +MESA3D_CONF_OPTS += -Dgallium-xa=true
>  else
> -MESA3D_CONF_OPTS += --disable-xa
> +MESA3D_CONF_OPTS += -Dgallium-xa=false
>  endif
>  else
>  MESA3D_CONF_OPTS += \
> -	--disable-glx \
> -	--disable-xa
> +	-Dglx=disabled \
> +	-Dgallium-xa=false
>  endif
>
>  # Drivers
> @@ -111,63 +102,62 @@ MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST) += swrast
>  MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I915)   += i915
>  MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I965)   += i965
>  MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU) += nouveau
> -MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON) += radeon
> +MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON) += r100
>  # Vulkan Drivers
>  MESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL)   += intel
>
>  ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER),)
>  MESA3D_CONF_OPTS += \
> -	--without-gallium-drivers \
> -	--disable-gallium-extra-hud
> +	-Dgallium-drivers= \
> +	-Dgallium-extra-hud=false
>  else
>  MESA3D_CONF_OPTS += \
> -	--enable-shared-glapi \
> -	--with-gallium-drivers=$(subst $(space),$(comma),$(MESA3D_GALLIUM_DRIVERS-y)) \
> -	--enable-gallium-extra-hud
> +	-Dshared-glapi=true \
> +	-Dgallium-drivers=$(subst $(space),$(comma),$(MESA3D_GALLIUM_DRIVERS-y)) \
> +	-Dgallium-extra-hud=true
>  endif
>
>  ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
>  MESA3D_CONF_OPTS += \
> -	--without-dri-drivers --disable-dri3
> +	-Ddri-drivers= -Ddri3=false
>  else
>  ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
>  MESA3D_DEPENDENCIES += xlib_libxshmfence
> -MESA3D_CONF_OPTS += --enable-dri3
> +MESA3D_CONF_OPTS += -Ddri3=true
>  else
> -MESA3D_CONF_OPTS += --disable-dri3
> +MESA3D_CONF_OPTS += -Ddri3=false
>  endif
>  MESA3D_CONF_OPTS += \
> -	--enable-shared-glapi \
> -	--enable-driglx-direct \
> -	--with-dri-driverdir=/usr/lib/dri \
> -	--with-dri-drivers=$(subst $(space),$(comma),$(MESA3D_DRI_DRIVERS-y))
> +	-Dshared-glapi=true \
> +	-Dglx-direct=true \
> +	-Ddri-drivers=$(subst $(space),$(comma),$(MESA3D_DRI_DRIVERS-y))
>  endif
>
>  ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),)
>  MESA3D_CONF_OPTS += \
> -	--without-vulkan-drivers
> +	-Dvulkan-drivers=
>  else
>  MESA3D_DEPENDENCIES += xlib_libxshmfence
>  MESA3D_CONF_OPTS += \
> -	--enable-dri3 \
> -	--with-vulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
> +	-Ddri3=true \
> +	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
>  endif
>
>  # APIs
>
>  ifeq ($(BR2_PACKAGE_MESA3D_OSMESA_CLASSIC),y)
> -MESA3D_CONF_OPTS += --enable-osmesa
> +MESA3D_CONF_OPTS += -Dosmesa=classic
>  else
> -MESA3D_CONF_OPTS += --disable-osmesa
> +MESA3D_CONF_OPTS += -Dosmesa=none
>  endif
>
>  # Always enable OpenGL:
> -#   - it is needed for GLES (mesa3d's ./configure is a bit weird)
> -MESA3D_CONF_OPTS += --enable-opengl --enable-dri
> +#   - it is needed for GLES (mesa3d's meson.build is a bit weird)
> +MESA3D_CONF_OPTS += -Dopengl=true -Dglx=dri
>
>  # libva and mesa3d have a circular dependency
>  # we do not need libva support in mesa3d, therefore disable this option
> -MESA3D_CONF_OPTS += --disable-va
> +MESA3D_CONF_OPTS += -Dgallium-va=false
>
>  # libGL is only provided for a full xorg stack
>  ifeq ($(BR2_PACKAGE_XORG7),y)
> @@ -194,57 +184,58 @@ endif
>  ifeq ($(BR2_PACKAGE_WAYLAND),y)
>  MESA3D_DEPENDENCIES += wayland wayland-protocols
>  MESA3D_PLATFORMS += wayland
> +MESA3D_CONF_OPTS += -Dwayland-scanner-path=$(HOST_DIR)/bin/wayland-scanner
>  endif
>  ifeq ($(BR2_PACKAGE_XORG7),y)
>  MESA3D_PLATFORMS += x11
>  endif
>
>  MESA3D_CONF_OPTS += \
> -	--with-platforms=$(subst $(space),$(comma),$(MESA3D_PLATFORMS))
> +	-Dplatforms=$(subst $(space),$(comma),$(MESA3D_PLATFORMS))
>
>  ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y)
>  MESA3D_PROVIDES += libegl
>  MESA3D_CONF_OPTS += \
> -	--enable-gbm \
> -	--enable-egl
> +	-Dgbm=true \
> +	-Degl=true
>  else
>  MESA3D_CONF_OPTS += \
> -	--disable-egl
> +	-Degl=true=false
>  endif
>
>  ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_ES),y)
>  MESA3D_PROVIDES += libgles
> -MESA3D_CONF_OPTS += --enable-gles1 --enable-gles2
> +MESA3D_CONF_OPTS += -Dgles1=true -Dgles2=true
>  else
> -MESA3D_CONF_OPTS += --disable-gles1 --disable-gles2
> +MESA3D_CONF_OPTS += -Dgles1=false -Dgles2=false
>  endif
>
>  ifeq ($(BR2_PACKAGE_MESA3D_XVMC),y)
>  MESA3D_DEPENDENCIES += xlib_libXvMC
> -MESA3D_CONF_OPTS += --enable-xvmc
> +MESA3D_CONF_OPTS += -Dgallium-xvmc=true
>  else
> -MESA3D_CONF_OPTS += --disable-xvmc
> +MESA3D_CONF_OPTS += -Dgallium-xvmc=false
>  endif
>
>  ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
> -MESA3D_CONF_OPTS += --enable-libunwind
> +MESA3D_CONF_OPTS += -Dlibunwind=true
>  MESA3D_DEPENDENCIES += libunwind
>  else
> -MESA3D_CONF_OPTS += --disable-libunwind
> +MESA3D_CONF_OPTS += -Dlibunwind=false
>  endif
>
>  ifeq ($(BR2_PACKAGE_LIBVDPAU),y)
>  MESA3D_DEPENDENCIES += libvdpau
> -MESA3D_CONF_OPTS += --enable-vdpau
> +MESA3D_CONF_OPTS += -Dgallium-vdpau=true
>  else
> -MESA3D_CONF_OPTS += --disable-vdpau
> +MESA3D_CONF_OPTS += -Dgallium-vdpau=false
>  endif
>
>  ifeq ($(BR2_PACKAGE_LM_SENSORS),y)
> -MESA3D_CONF_OPTS += --enable-lmsensors
> +MESA3D_CONF_OPTS += -Dlmsensors=true
>  MESA3D_DEPENDENCIES += lm-sensors
>  else
> -MESA3D_CONF_OPTS += --disable-lmsensors
> +MESA3D_CONF_OPTS += -Dlmsensors=false
>  endif
>
> -$(eval $(autotools-package))
> +$(eval $(meson-package))

Tested your patch series for i.mx6 (nitrogen6x_defconfig based), got the following
configure failure (see defconfig below):

[...]
  Host machine cpu family: arm
  Host machine cpu: cortex-a9
  Target machine cpu family: arm
  Target machine cpu: cortex-a9
  Build machine cpu family: x86_64
  Build machine cpu: x86_64

  meson.build:342:4: ERROR: Problem encountered: Cannot build GLX support without X11 platform support and at least one OpenGL API

  A full log can be found at .../build/mesa3d-19.0.2/build/meson-logs/meson-log.txt
  make[1]: *** [package/pkg-generic.mk:231: .../build/mesa3d-19.0.2/.stamp_configured]

The configure failure could be 'fixed' by the following quick patch:

diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
index 5244545584..773defbfa1 100644
--- a/package/mesa3d/mesa3d.mk
+++ b/package/mesa3d/mesa3d.mk
@@ -153,7 +153,7 @@ endif

 # Always enable OpenGL:
 #   - it is needed for GLES (mesa3d's meson.build is a bit weird)
-MESA3D_CONF_OPTS += -Dopengl=true -Dglx=dri
+MESA3D_CONF_OPTS += -Dopengl=true

 # libva and mesa3d have a circular dependency
 # we do not need libva support in mesa3d, therefore disable this option


With this patch applied the configure step succeeds, but the compile step
fails with:

[29/843] Generating vtn_gather_types.c with a custom command.
FAILED: src/compiler/spirv/vtn_gather_types.c
.../host/bin/python3 ../src/compiler/spirv/vtn_gather_types_c.py ../src/compiler/spirv/spirv.core.grammar.json src/compiler/spirv/vtn_gather_types.c
Traceback (most recent call last):
  File "../src/compiler/spirv/vtn_gather_types_c.py", line 29, in <module>
    from mako.template import Template
ModuleNotFoundError: No module named 'mako'
[30/843] Generating spirv_info.c with a custom command.
FAILED: src/compiler/spirv/spirv_info.c
.../host/bin/python3 ../src/compiler/spirv/spirv_info_c.py ../src/compiler/spirv/spirv.core.grammar.json src/compiler/spirv/spirv_info.c
Traceback (most recent call last):
  File "../src/compiler/spirv/spirv_info_c.py", line 29, in <module>
    from mako.template import Template
ModuleNotFoundError: No module named 'mako'
[35/843] Generating ir_expression_oper....h with a meson_exe.py custom command.
FAILED: src/compiler/ir_expression_operation.h
.../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_f99bf283dabcb83e5389be4bfb906240d67be6d7.dat
Traceback (most recent call last):
  File "../src/compiler/glsl/ir_expression_operation.py", line 23, in <module>
    import mako.template
ModuleNotFoundError: No module named 'mako'
[36/843] Generating nir_constant_expre....c with a meson_exe.py custom command.
FAILED: src/compiler/nir/nir_constant_expressions.c
.../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_16aba73c258f517db1423ca1fcbcc47a6f58541b.dat
Traceback (most recent call last):
  File "../src/compiler/nir/nir_constant_expressions.py", line 424, in <module>
    from mako.template import Template
ModuleNotFoundError: No module named 'mako'
[37/843] Generating nir_builder_opcodes.h with a meson_exe.py custom command.
FAILED: src/compiler/nir/nir_builder_opcodes.h
.../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_9519d8170e7bc8796b8caf294704c1ae9b9beb60.dat
Traceback (most recent call last):
  File "../src/compiler/nir/nir_builder_opcodes_h.py", line 98, in <module>
    from mako.template import Template
ModuleNotFoundError: No module named 'mako'
[38/843] Generating nir_opcodes.h with a meson_exe.py custom command.
FAILED: src/compiler/nir/nir_opcodes.h
.../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_7d8bc70fe02c4d6671c051c06b6c456b05bca90c.dat
Traceback (most recent call last):
  File "../src/compiler/nir/nir_opcodes_h.py", line 45, in <module>
    from mako.template import Template
ModuleNotFoundError: No module named 'mako'
[45/843] Generating format_srgb with a meson_exe.py custom command.
ninja: build stopped: subcommand failed.
make[1]: *** [package/pkg-generic.mk:241: .../build/mesa3d-19.0.2/.stamp_built] Error 1


Seems the patch 0002-meson-use-generated-files-if-already-present-in-the-.patch is
not enough to prevent all python-mako based file generation calls...

Regards,
Peter

BR2_arm=y
BR2_cortex_a9=y
BR2_ARM_ENABLE_NEON=y
BR2_ARM_ENABLE_VFP=y
BR2_ARM_FPU_VFPV3=y
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
BR2_BINUTILS_VERSION_2_32_X=y
BR2_GCC_VERSION_8_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1"
BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/common/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/2aef1ef6.tar.gz"
BR2_LINUX_KERNEL_DEFCONFIG="boundary"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-nit6xlite imx6dl-nitrogen6_vm imx6dl-nitrogen6x imx6q-nitrogen6x imx6dl-nitrogen6_som2 imx6q-nitrogen6_som2 imx6qp-nitrogen6_som2 imx6q-nitrogen6_max imx6qp-nitrogen6_max imx6q-sabrelite"
BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_KMSRO=y
BR2_PACKAGE_MESA3D_OPENGL_ES=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_TARBALL=y
BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/1530219d.tar.gz"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen6q"
BR2_TARGET_UBOOT_FORMAT_IMX=y
BR2_TARGET_UBOOT_BOOT_SCRIPT=y
BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd"
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
Romain Naour April 30, 2019, 11:14 a.m. UTC | #2
Hi Peter, All

Le 25/04/2019 à 22:56, Peter Seiderer a écrit :
> Hello Bernd, Romain,
> 

[...]

> 
> Tested your patch series for i.mx6 (nitrogen6x_defconfig based), got the following
> configure failure (see defconfig below):
> 
> [...]
>   Host machine cpu family: arm
>   Host machine cpu: cortex-a9
>   Target machine cpu family: arm
>   Target machine cpu: cortex-a9
>   Build machine cpu family: x86_64
>   Build machine cpu: x86_64
> 
>   meson.build:342:4: ERROR: Problem encountered: Cannot build GLX support without X11 platform support and at least one OpenGL API
> 
>   A full log can be found at .../build/mesa3d-19.0.2/build/meson-logs/meson-log.txt
>   make[1]: *** [package/pkg-generic.mk:231: .../build/mesa3d-19.0.2/.stamp_configured]
> 
> The configure failure could be 'fixed' by the following quick patch:
> 
> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
> index 5244545584..773defbfa1 100644
> --- a/package/mesa3d/mesa3d.mk
> +++ b/package/mesa3d/mesa3d.mk
> @@ -153,7 +153,7 @@ endif
> 
>  # Always enable OpenGL:
>  #   - it is needed for GLES (mesa3d's meson.build is a bit weird)
> -MESA3D_CONF_OPTS += -Dopengl=true -Dglx=dri
> +MESA3D_CONF_OPTS += -Dopengl=true

Ack.
Also, I'll replace -Dglx=auto by -Dglx=dri which is the only option that can be
supported currently by the Buildroot package.
All other options (xlib and xlib-gallium) are not supported by the current
packaging.

> 
>  # libva and mesa3d have a circular dependency
>  # we do not need libva support in mesa3d, therefore disable this option
> 
> 
> With this patch applied the configure step succeeds, but the compile step
> fails with:
> 
> [29/843] Generating vtn_gather_types.c with a custom command.
> FAILED: src/compiler/spirv/vtn_gather_types.c
> .../host/bin/python3 ../src/compiler/spirv/vtn_gather_types_c.py ../src/compiler/spirv/spirv.core.grammar.json src/compiler/spirv/vtn_gather_types.c
> Traceback (most recent call last):
>   File "../src/compiler/spirv/vtn_gather_types_c.py", line 29, in <module>
>     from mako.template import Template
> ModuleNotFoundError: No module named 'mako'
> [30/843] Generating spirv_info.c with a custom command.
> FAILED: src/compiler/spirv/spirv_info.c
> .../host/bin/python3 ../src/compiler/spirv/spirv_info_c.py ../src/compiler/spirv/spirv.core.grammar.json src/compiler/spirv/spirv_info.c
> Traceback (most recent call last):
>   File "../src/compiler/spirv/spirv_info_c.py", line 29, in <module>
>     from mako.template import Template
> ModuleNotFoundError: No module named 'mako'
> [35/843] Generating ir_expression_oper....h with a meson_exe.py custom command.
> FAILED: src/compiler/ir_expression_operation.h
> .../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_f99bf283dabcb83e5389be4bfb906240d67be6d7.dat
> Traceback (most recent call last):
>   File "../src/compiler/glsl/ir_expression_operation.py", line 23, in <module>
>     import mako.template
> ModuleNotFoundError: No module named 'mako'
> [36/843] Generating nir_constant_expre....c with a meson_exe.py custom command.
> FAILED: src/compiler/nir/nir_constant_expressions.c
> .../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_16aba73c258f517db1423ca1fcbcc47a6f58541b.dat
> Traceback (most recent call last):
>   File "../src/compiler/nir/nir_constant_expressions.py", line 424, in <module>
>     from mako.template import Template
> ModuleNotFoundError: No module named 'mako'
> [37/843] Generating nir_builder_opcodes.h with a meson_exe.py custom command.
> FAILED: src/compiler/nir/nir_builder_opcodes.h
> .../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_9519d8170e7bc8796b8caf294704c1ae9b9beb60.dat
> Traceback (most recent call last):
>   File "../src/compiler/nir/nir_builder_opcodes_h.py", line 98, in <module>
>     from mako.template import Template
> ModuleNotFoundError: No module named 'mako'
> [38/843] Generating nir_opcodes.h with a meson_exe.py custom command.
> FAILED: src/compiler/nir/nir_opcodes.h
> .../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_7d8bc70fe02c4d6671c051c06b6c456b05bca90c.dat
> Traceback (most recent call last):
>   File "../src/compiler/nir/nir_opcodes_h.py", line 45, in <module>
>     from mako.template import Template
> ModuleNotFoundError: No module named 'mako'
> [45/843] Generating format_srgb with a meson_exe.py custom command.
> ninja: build stopped: subcommand failed.
> make[1]: *** [package/pkg-generic.mk:241: .../build/mesa3d-19.0.2/.stamp_built] Error 1
> 
> 
> Seems the patch 0002-meson-use-generated-files-if-already-present-in-the-.patch is
> not enough to prevent all python-mako based file generation calls...

Indeed, this doesn't work when some drivers (like etnaviv) are enabled.

I don't see other solution than adding a new package python3-mako like it was
done for python3-setuptools.
See: http://lists.busybox.net/pipermail/buildroot/2019-April/247707.html

It's pity that the meson build system can't use existing generated files present
in the release archive.

Best regards,
Romain

> 
> Regards,
> Peter
> 
> BR2_arm=y
> BR2_cortex_a9=y
> BR2_ARM_ENABLE_NEON=y
> BR2_ARM_ENABLE_VFP=y
> BR2_ARM_FPU_VFPV3=y
> BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
> BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
> BR2_BINUTILS_VERSION_2_32_X=y
> BR2_GCC_VERSION_8_X=y
> BR2_TOOLCHAIN_BUILDROOT_CXX=y
> BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
> BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1"
> BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/common/post-build.sh"
> BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh"
> BR2_LINUX_KERNEL=y
> BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
> BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/2aef1ef6.tar.gz"
> BR2_LINUX_KERNEL_DEFCONFIG="boundary"
> BR2_LINUX_KERNEL_DTS_SUPPORT=y
> BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-nit6xlite imx6dl-nitrogen6_vm imx6dl-nitrogen6x imx6q-nitrogen6x imx6dl-nitrogen6_som2 imx6q-nitrogen6_som2 imx6qp-nitrogen6_som2 imx6q-nitrogen6_max imx6qp-nitrogen6_max imx6q-sabrelite"
> BR2_LINUX_KERNEL_INSTALL_TARGET=y
> BR2_PACKAGE_MESA3D=y
> BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV=y
> BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_KMSRO=y
> BR2_PACKAGE_MESA3D_OPENGL_ES=y
> BR2_TARGET_ROOTFS_EXT2=y
> BR2_TARGET_ROOTFS_EXT2_4=y
> BR2_TARGET_UBOOT=y
> BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
> BR2_TARGET_UBOOT_CUSTOM_TARBALL=y
> BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/1530219d.tar.gz"
> BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen6q"
> BR2_TARGET_UBOOT_FORMAT_IMX=y
> BR2_TARGET_UBOOT_BOOT_SCRIPT=y
> BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd"
> BR2_PACKAGE_HOST_GENIMAGE=y
> BR2_PACKAGE_HOST_UBOOT_TOOLS=y
>
Peter Seiderer April 30, 2019, 9:14 p.m. UTC | #3
Hello Romain,

On Tue, 30 Apr 2019 13:14:55 +0200, Romain Naour <romain.naour@smile.fr> wrote:

> Hi Peter, All
> 
> Le 25/04/2019 à 22:56, Peter Seiderer a écrit :
> > Hello Bernd, Romain,
> >   
> 
> [...]
> 
> > 
> > Tested your patch series for i.mx6 (nitrogen6x_defconfig based), got the following
> > configure failure (see defconfig below):
> > 
> > [...]
> >   Host machine cpu family: arm
> >   Host machine cpu: cortex-a9
> >   Target machine cpu family: arm
> >   Target machine cpu: cortex-a9
> >   Build machine cpu family: x86_64
> >   Build machine cpu: x86_64
> > 
> >   meson.build:342:4: ERROR: Problem encountered: Cannot build GLX support without X11 platform support and at least one OpenGL API
> > 
> >   A full log can be found at .../build/mesa3d-19.0.2/build/meson-logs/meson-log.txt
> >   make[1]: *** [package/pkg-generic.mk:231: .../build/mesa3d-19.0.2/.stamp_configured]
> > 
> > The configure failure could be 'fixed' by the following quick patch:
> > 
> > diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
> > index 5244545584..773defbfa1 100644
> > --- a/package/mesa3d/mesa3d.mk
> > +++ b/package/mesa3d/mesa3d.mk
> > @@ -153,7 +153,7 @@ endif
> > 
> >  # Always enable OpenGL:
> >  #   - it is needed for GLES (mesa3d's meson.build is a bit weird)
> > -MESA3D_CONF_OPTS += -Dopengl=true -Dglx=dri
> > +MESA3D_CONF_OPTS += -Dopengl=true  
> 
> Ack.
> Also, I'll replace -Dglx=auto by -Dglx=dri which is the only option that can be
> supported currently by the Buildroot package.
> All other options (xlib and xlib-gallium) are not supported by the current
> packaging.

So use the glx option only in case platform x11 is selected?

> 
> > 
> >  # libva and mesa3d have a circular dependency
> >  # we do not need libva support in mesa3d, therefore disable this option
> > 
> > 
> > With this patch applied the configure step succeeds, but the compile step
> > fails with:
> > 
> > [29/843] Generating vtn_gather_types.c with a custom command.
> > FAILED: src/compiler/spirv/vtn_gather_types.c
> > .../host/bin/python3 ../src/compiler/spirv/vtn_gather_types_c.py ../src/compiler/spirv/spirv.core.grammar.json src/compiler/spirv/vtn_gather_types.c
> > Traceback (most recent call last):
> >   File "../src/compiler/spirv/vtn_gather_types_c.py", line 29, in <module>
> >     from mako.template import Template
> > ModuleNotFoundError: No module named 'mako'
> > [30/843] Generating spirv_info.c with a custom command.
> > FAILED: src/compiler/spirv/spirv_info.c
> > .../host/bin/python3 ../src/compiler/spirv/spirv_info_c.py ../src/compiler/spirv/spirv.core.grammar.json src/compiler/spirv/spirv_info.c
> > Traceback (most recent call last):
> >   File "../src/compiler/spirv/spirv_info_c.py", line 29, in <module>
> >     from mako.template import Template
> > ModuleNotFoundError: No module named 'mako'
> > [35/843] Generating ir_expression_oper....h with a meson_exe.py custom command.
> > FAILED: src/compiler/ir_expression_operation.h
> > .../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_f99bf283dabcb83e5389be4bfb906240d67be6d7.dat
> > Traceback (most recent call last):
> >   File "../src/compiler/glsl/ir_expression_operation.py", line 23, in <module>
> >     import mako.template
> > ModuleNotFoundError: No module named 'mako'
> > [36/843] Generating nir_constant_expre....c with a meson_exe.py custom command.
> > FAILED: src/compiler/nir/nir_constant_expressions.c
> > .../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_16aba73c258f517db1423ca1fcbcc47a6f58541b.dat
> > Traceback (most recent call last):
> >   File "../src/compiler/nir/nir_constant_expressions.py", line 424, in <module>
> >     from mako.template import Template
> > ModuleNotFoundError: No module named 'mako'
> > [37/843] Generating nir_builder_opcodes.h with a meson_exe.py custom command.
> > FAILED: src/compiler/nir/nir_builder_opcodes.h
> > .../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_9519d8170e7bc8796b8caf294704c1ae9b9beb60.dat
> > Traceback (most recent call last):
> >   File "../src/compiler/nir/nir_builder_opcodes_h.py", line 98, in <module>
> >     from mako.template import Template
> > ModuleNotFoundError: No module named 'mako'
> > [38/843] Generating nir_opcodes.h with a meson_exe.py custom command.
> > FAILED: src/compiler/nir/nir_opcodes.h
> > .../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_7d8bc70fe02c4d6671c051c06b6c456b05bca90c.dat
> > Traceback (most recent call last):
> >   File "../src/compiler/nir/nir_opcodes_h.py", line 45, in <module>
> >     from mako.template import Template
> > ModuleNotFoundError: No module named 'mako'
> > [45/843] Generating format_srgb with a meson_exe.py custom command.
> > ninja: build stopped: subcommand failed.
> > make[1]: *** [package/pkg-generic.mk:241: .../build/mesa3d-19.0.2/.stamp_built] Error 1
> > 
> > 
> > Seems the patch 0002-meson-use-generated-files-if-already-present-in-the-.patch is
> > not enough to prevent all python-mako based file generation calls...  
> 
> Indeed, this doesn't work when some drivers (like etnaviv) are enabled.
> 
> I don't see other solution than adding a new package python3-mako like it was
> done for python3-setuptools.
> See: http://lists.busybox.net/pipermail/buildroot/2019-April/247707.html
> 
> It's pity that the meson build system can't use existing generated files present
> in the release archive.

Did a 'hack' patch to avoid file generation (not upstreamable, but for a first try):

diff --git a/package/mesa3d/0005-Fix-no-generated-files.patch b/package/mesa3d/0005-Fix-no-generated-files.patch
new file mode 100644
index 00000000..f28dfde8
--- /dev/null
+++ b/package/mesa3d/0005-Fix-no-generated-files.patch
@@ -0,0 +1,393 @@
+diff --git a/src/compiler/glsl/meson.build b/src/compiler/glsl/meson.build
+index 3b3ec27..33e8703 100644
+--- a/src/compiler/glsl/meson.build
++++ b/src/compiler/glsl/meson.build
+@@ -20,6 +20,8 @@
+ 
+ subdir('glcpp')
+ 
++prog_echo = find_program('echo')
++
+ glsl_parser = custom_target(
+   'glsl_parser',
+   input : 'glsl_parser.yy',
+@@ -38,19 +40,25 @@ glsl_lexer_cpp = custom_target(
+ )
+ 
+ ir_expression_operation_constant_h = custom_target(
+-  'ir_expression_operation_constant.h',
+-  input : 'ir_expression_operation.py',
+-  output : 'ir_expression_operation_constant.h',
+-  command : [prog_python, '@INPUT@', 'constant'],
++  'ir_expression_operation_constant.h_bla',
++#  input : 'ir_expression_operation.py',
++#  output : 'ir_expression_operation_constant.h',
++#  command : [prog_python, '@INPUT@', 'constant'],
++  input : files(),
++  output : 'ir_expression_operation_constant.h_bla',
++  command : [prog_echo],
+   capture : true,
+   build_always_stale : false,
+ )
+ 
+ ir_expression_operation_strings_h = custom_target(
+-  'ir_expression_operation_strings.h',
+-  input : 'ir_expression_operation.py',
++  'ir_expression_operation_strings.h_bla',
++#  input : 'ir_expression_operation.py',
++#  output : 'ir_expression_operation_strings.h',
++#  command : [prog_python, '@INPUT@', 'strings'],
++  input : files(),
+   output : 'ir_expression_operation_strings.h',
+-  command : [prog_python, '@INPUT@', 'strings'],
++  command : [prog_echo],
+   capture : true,
+   build_always_stale : false,
+ )
+diff --git a/src/compiler/meson.build b/src/compiler/meson.build
+index ff254b6..6debfb9 100644
+--- a/src/compiler/meson.build
++++ b/src/compiler/meson.build
+@@ -18,6 +18,8 @@
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ # SOFTWARE.
+ 
++prog_echo = find_program('echo')
++
+ inc_compiler = include_directories('.')
+ inc_nir = include_directories('nir')
+ inc_glsl = include_directories('glsl')
+@@ -38,11 +40,14 @@ files_libcompiler = files(
+ 
+ ir_expression_operation_h = custom_target(
+   'ir_expression_operation.h',
+-  input : 'glsl/ir_expression_operation.py',
+-  output : 'ir_expression_operation.h',
+-  command : [prog_python, '@INPUT@', 'enum'],
++#  input : 'glsl/ir_expression_operation.py',
++#  output : 'ir_expression_operation.h',
++#  command : [prog_python, '@INPUT@', 'enum'],
+   capture : true,
+   build_always_stale : false,
++  input : files(),
++  output : 'ir_expression_operation.h',
++  command : [prog_echo],
+ )
+ 
+ libcompiler = static_library(
+diff --git a/src/compiler/nir/meson.build b/src/compiler/nir/meson.build
+index e6784fc..a6aedfb 100644
+--- a/src/compiler/nir/meson.build
++++ b/src/compiler/nir/meson.build
+@@ -18,70 +18,93 @@
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ # SOFTWARE.
+ 
++prog_echo = find_program('echo')
++
+ nir_depends = files('nir_opcodes.py', 'nir_intrinsics.py')
+ 
+ nir_builder_opcodes_h = custom_target(
+   'nir_builder_opcodes.h',
+-  input : 'nir_builder_opcodes_h.py',
++#  input : 'nir_builder_opcodes_h.py',
++#  output : 'nir_builder_opcodes.h',
++#  command : [prog_python, '@INPUT@'],
++  input : files(),
+   output : 'nir_builder_opcodes.h',
+-  command : [prog_python, '@INPUT@'],
++  command : [prog_echo],
+   capture : true,
+-  depend_files : nir_depends,
++#  depend_files : nir_depends,
+ )
+ 
+-nir_constant_expressions_c = custom_target(
+-  'nir_constant_expressions.c',
+-  input : 'nir_constant_expressions.py',
+-  output : 'nir_constant_expressions.c',
+-  command : [prog_python, '@INPUT@'],
+-  capture : true,
+-  depend_files : nir_depends,
+-)
++#nir_constant_expressions_c = custom_target(
++#  'nir_constant_expressions.c',
++#  input : 'nir_constant_expressions.py',
++#  output : 'nir_constant_expressions.c',
++#  command : [prog_python, '@INPUT@'],
++#  input : files(),
++#  output : 'nir_constant_expressions.c',
++#  command : [prog_echo],
++#  capture : true,
++#  depend_files : nir_depends,
++#)
+ 
+ nir_opcodes_h = custom_target(
+   'nir_opcodes.h',
+-  input : 'nir_opcodes_h.py',
++#  input : 'nir_opcodes_h.py',
++#  output : 'nir_opcodes.h',
++#  command : [prog_python, '@INPUT@'],
++  input : files(),
+   output : 'nir_opcodes.h',
+-  command : [prog_python, '@INPUT@'],
++  command : [prog_echo],
+   capture : true,
+-  depend_files : nir_depends,
++#  depend_files : nir_depends,
+ )
+ 
+-nir_opcodes_c = custom_target(
+-  'nir_opcodes.c',
+-  input : 'nir_opcodes_c.py',
+-  output : 'nir_opcodes.c',
+-  command : [prog_python, '@INPUT@'],
+-  capture : true,
+-  depend_files : nir_depends,
+-)
++#nir_opcodes_c = custom_target(
++#  'nir_opcodes.c',
++#  input : 'nir_opcodes_c.py',
++#  output : 'nir_opcodes.c',
++#  command : [prog_python, '@INPUT@'],
++#  input : files(),
++#  output : 'nir_opcodes.c',
++#  command : [prog_echo],
++#  capture : true,
++#  depend_files : nir_depends,
++#)
+ 
+-nir_opt_algebraic_c = custom_target(
+-  'nir_opt_algebraic.c',
+-  input : 'nir_opt_algebraic.py',
+-  output : 'nir_opt_algebraic.c',
+-  command : [prog_python, '@INPUT@'],
+-  capture : true,
+-  depend_files : files('nir_algebraic.py'),
+-)
++#nir_opt_algebraic_c = custom_target(
++#  'nir_opt_algebraic.c',
++#  input : 'nir_opt_algebraic.py',
++#  output : 'nir_opt_algebraic.c',
++#  command : [prog_python, '@INPUT@'],
++#  input : files(),
++#  output : 'nir_opt_algebraic.c',
++#  command : [prog_echo],
++#  capture : true,
++#  depend_files : files('nir_algebraic.py'),
++#)
+ 
+ nir_intrinsics_h = custom_target(
+   'nir_intrinsics.h',
+-  input : 'nir_intrinsics_h.py',
++#  input : 'nir_intrinsics_h.py',
++#  output : 'nir_intrinsics.h',
++#  command : [prog_python, '@INPUT@', '--outdir', meson.current_build_dir()],
++  input : files(),
+   output : 'nir_intrinsics.h',
+-  command : [prog_python, '@INPUT@', '--outdir', meson.current_build_dir()],
++  command : [prog_echo],
+   capture : false,
+-  depend_files : files('nir_intrinsics.py'),
++#  depend_files : files('nir_intrinsics.py'),
+ )
+ 
+-nir_intrinsics_c = custom_target(
+-  'nir_intrinsic.c',
+-  input : 'nir_intrinsics_c.py',
+-  output : 'nir_intrinsics.c',
+-  command : [prog_python, '@INPUT@', '--outdir', meson.current_build_dir()],
+-  capture: false,
+-  depend_files : files('nir_intrinsics.py'),
+-)
++#nir_intrinsics_c = custom_target(
++#  'nir_intrinsics.c',
++#  input : 'nir_intrinsics_c.py',
++#  output : 'nir_intrinsics.c',
++#  command : [prog_python, '@INPUT@', '--outdir', meson.current_build_dir()],
++#  input : files(),
++#  output : 'nir_intrinsics.c',
++#  command : [prog_echo],
++#  capture: false,
++#  depend_files : files('nir_intrinsics.py'),
++#)
+ 
+ files_libnir = files(
+   'nir.c',
+@@ -91,6 +114,7 @@ files_libnir = files(
+   'nir_builtin_builder.h',
+   'nir_clone.c',
+   'nir_constant_expressions.h',
++  'nir_constant_expressions.c',
+   'nir_control_flow.c',
+   'nir_control_flow.h',
+   'nir_control_flow_private.h',
+@@ -105,6 +129,7 @@ files_libnir = files(
+   'nir_inline_functions.c',
+   'nir_instr_set.c',
+   'nir_instr_set.h',
++  'nir_intrinsics.c',
+   'nir_linking_helpers.c',
+   'nir_liveness.c',
+   'nir_loop_analyze.c',
+@@ -156,6 +181,8 @@ files_libnir = files(
+   'nir_move_load_const.c',
+   'nir_move_vec_src_uses_to_dest.c',
+   'nir_normalize_cubemap_coords.c',
++  'nir_opcodes.c',
++  'nir_opt_algebraic.c',
+   'nir_opt_conditional_discard.c',
+   'nir_opt_constant_folding.c',
+   'nir_opt_copy_prop_vars.c',
+@@ -206,11 +233,13 @@ files_libnir = files(
+   '../spirv/nir_spirv.h',
+   '../spirv/spirv.h',
+   '../spirv/spirv_info.h',
++  '../spirv/spirv_info.c',
+   '../spirv/spirv_to_nir.c',
+   '../spirv/vtn_alu.c',
+   '../spirv/vtn_amd.c',
+   '../spirv/vtn_cfg.c',
+   '../spirv/vtn_glsl450.c',
++  '../spirv/vtn_gather_types.c',
+   '../spirv/vtn_private.h',
+   '../spirv/vtn_subgroup.c',
+   '../spirv/vtn_variables.c',
+@@ -218,9 +247,12 @@ files_libnir = files(
+ 
+ libnir = static_library(
+   'nir',
+-  [files_libnir, spirv_info_c, nir_opt_algebraic_c, nir_opcodes_c,
+-   nir_opcodes_h, nir_constant_expressions_c, nir_builder_opcodes_h,
+-   vtn_gather_types_c, nir_intrinsics_c, nir_intrinsics_h],
++#  [files_libnir, spirv_info_c, nir_opt_algebraic_c, nir_opcodes_c,
++#   nir_opcodes_h, nir_constant_expressions_c, nir_builder_opcodes_h,
++#   vtn_gather_types_c, nir_intrinsics_c, nir_intrinsics_h],
++  [files_libnir,
++   nir_opcodes_h, nir_builder_opcodes_h,
++   nir_intrinsics_h],
+   include_directories : [inc_common, inc_compiler, include_directories('../spirv')],
+   c_args : [c_vis_args, c_msvc_compat_args, no_override_init_args],
+   link_with : libcompiler,
+diff --git a/src/compiler/spirv/meson.build b/src/compiler/spirv/meson.build
+index c91d12a..b0e6f1e 100644
+--- a/src/compiler/spirv/meson.build
++++ b/src/compiler/spirv/meson.build
+@@ -18,16 +18,24 @@
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ # SOFTWARE.
+ 
+-vtn_gather_types_c = custom_target(
+-  'vtn_gather_types.c',
+-  input : files('vtn_gather_types_c.py', 'spirv.core.grammar.json'),
+-  output : 'vtn_gather_types.c',
+-  command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
+-)
++prog_echo = find_program('echo')
+ 
+-spirv_info_c = custom_target(
+-  'spirv_info.c',
+-  input : files('spirv_info_c.py', 'spirv.core.grammar.json'),
+-  output : 'spirv_info.c',
+-  command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
+-)
++#vtn_gather_types_c = custom_target(
++#  'vtn_gather_types.c_bla',
++#  input : files('vtn_gather_types_c.py', 'spirv.core.grammar.json'),
++#  output : 'vtn_gather_types.c',
++#  command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
++#  input : files(),
++#  output : 'vtn_gather_types.c_bla',
++#  command : [prog_echo],
++#)
++
++#spirv_info_c = custom_target(
++#  'spirv_info.c',
++#  input : files('spirv_info_c.py', 'spirv.core.grammar.json'),
++#  output : 'spirv_info.c',
++#  command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
++#  input : files(),
++#  output : 'spirv_info.c',
++#  command : [prog_echo],
++#)
+diff --git a/src/mesa/meson.build b/src/mesa/meson.build
+index 27c8c40..617f729 100644
+--- a/src/mesa/meson.build
++++ b/src/mesa/meson.build
+@@ -21,6 +21,8 @@
+ subdir('program')
+ subdir('main')
+ 
++prog_echo = find_program('echo')
++
+ # files shared between classic mesa and gallium mesa
+ files_libmesa_common = files(
+   'program/arbprogparse.c',
+@@ -663,13 +665,16 @@ elif with_asm_arch == 'sparc'
+   inc_libmesa_asm = include_directories('sparc')
+ endif
+ 
+-format_fallback_c = custom_target(
+-  'format_fallback.c',
+-  input : ['main/format_fallback.py', 'main/formats.csv'],
+-  output : 'format_fallback.c',
+-  command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
+-  depend_files : files('main/format_parser.py'),
+-)
++#format_fallback_c = custom_target(
++#  'format_fallback.c',
++#  input : ['main/format_fallback.py', 'main/formats.csv'],
++#  output : 'format_fallback.c',
++#  command : [prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
++#  input : files(),
++#  output : 'format_fallback.c',
++#  command : [prog_echo],
++#  depend_files : files('main/format_parser.py'),
++#)
+ 
+ get_hash_h = custom_target(
+   'get_hash.h',
+@@ -680,25 +685,30 @@ get_hash_h = custom_target(
+   capture : true,
+ )
+ 
+-foreach x : [['format_info.h', 'format_info.py'],
+-             ['format_pack.c', 'format_pack.py'],
+-             ['format_unpack.c', 'format_unpack.py']]
+-  files_libmesa_common += custom_target(
+-    x[0],
+-    input : ['main/@0@'.format(x[1]), 'main/formats.csv'],
+-    output : x[0],
+-    command : [prog_python, '@INPUT0@', '@INPUT1@'],
+-    depend_files : files('main/format_parser.py'),
+-    capture : true,
+-  )
+-endforeach
++#foreach x : [['format_info.h', 'format_info.py'],
++#             ['format_pack.c', 'format_pack.py'],
++#             ['format_unpack.c', 'format_unpack.py']]
++#  files_libmesa_common += custom_target(
++#    x[0],
++#    input : ['main/@0@'.format(x[1]), 'main/formats.csv'],
++#    output : x[0],
++#    command : [prog_python, '@INPUT0@', '@INPUT1@'],
++#    depend_files : files('main/format_parser.py'),
++#    input : files(),
++#    output : x[0],
++#    command : [prog_echo],
++#    capture : true,
++#  )
++#endforeach
+ 
+ files_libmesa_common += [
+   mesa_lex,
+   program_parse_tab,
+   main_api_exec_c,
+   main_enums_c,
+-  format_fallback_c,
++  'main/format_fallback.c',
++  'main/format_pack.c',
++  'main/format_unpack.c',
+   get_hash_h,
+   main_marshal_generated_c,
+   main_marshal_generated_h,

Regards,
Peter

> 
> Best regards,
> Romain
> 
> > 
> > Regards,
> > Peter
> > 
> > BR2_arm=y
> > BR2_cortex_a9=y
> > BR2_ARM_ENABLE_NEON=y
> > BR2_ARM_ENABLE_VFP=y
> > BR2_ARM_FPU_VFPV3=y
> > BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
> > BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
> > BR2_BINUTILS_VERSION_2_32_X=y
> > BR2_GCC_VERSION_8_X=y
> > BR2_TOOLCHAIN_BUILDROOT_CXX=y
> > BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
> > BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1"
> > BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/common/post-build.sh"
> > BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh"
> > BR2_LINUX_KERNEL=y
> > BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
> > BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/2aef1ef6.tar.gz"
> > BR2_LINUX_KERNEL_DEFCONFIG="boundary"
> > BR2_LINUX_KERNEL_DTS_SUPPORT=y
> > BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-nit6xlite imx6dl-nitrogen6_vm imx6dl-nitrogen6x imx6q-nitrogen6x imx6dl-nitrogen6_som2 imx6q-nitrogen6_som2 imx6qp-nitrogen6_som2 imx6q-nitrogen6_max imx6qp-nitrogen6_max imx6q-sabrelite"
> > BR2_LINUX_KERNEL_INSTALL_TARGET=y
> > BR2_PACKAGE_MESA3D=y
> > BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV=y
> > BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_KMSRO=y
> > BR2_PACKAGE_MESA3D_OPENGL_ES=y
> > BR2_TARGET_ROOTFS_EXT2=y
> > BR2_TARGET_ROOTFS_EXT2_4=y
> > BR2_TARGET_UBOOT=y
> > BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
> > BR2_TARGET_UBOOT_CUSTOM_TARBALL=y
> > BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/1530219d.tar.gz"
> > BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen6q"
> > BR2_TARGET_UBOOT_FORMAT_IMX=y
> > BR2_TARGET_UBOOT_BOOT_SCRIPT=y
> > BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd"
> > BR2_PACKAGE_HOST_GENIMAGE=y
> > BR2_PACKAGE_HOST_UBOOT_TOOLS=y
> >   
>
Bernd Kuhls April 30, 2019, 9:40 p.m. UTC | #4
[posted and mailed]

Peter Seiderer <ps.report@gmx.net> wrote in
news:20190430231428.231ee566@gmx.net: 

> So use the glx option only in case platform x11 is selected?

Hi Peter,

even autoconf-based mesa3d enables glx only when x11 is used:

https://git.buildroot.net/buildroot/tree/package/mesa3d/mesa3d.mk#n85

Regards, Bernd
Romain Naour May 6, 2019, 9:57 a.m. UTC | #5
Hi Peter,

Le 30/04/2019 à 23:14, Peter Seiderer a écrit :
> Hello Romain,
> 
> On Tue, 30 Apr 2019 13:14:55 +0200, Romain Naour <romain.naour@smile.fr> wrote:
> 
>> Hi Peter, All
>>
>> Le 25/04/2019 à 22:56, Peter Seiderer a écrit :
>>> Hello Bernd, Romain,
>>>   
>>
>> [...]
>>
>>>
>>> Tested your patch series for i.mx6 (nitrogen6x_defconfig based), got the following
>>> configure failure (see defconfig below):
>>>
>>> [...]
>>>   Host machine cpu family: arm
>>>   Host machine cpu: cortex-a9
>>>   Target machine cpu family: arm
>>>   Target machine cpu: cortex-a9
>>>   Build machine cpu family: x86_64
>>>   Build machine cpu: x86_64
>>>
>>>   meson.build:342:4: ERROR: Problem encountered: Cannot build GLX support without X11 platform support and at least one OpenGL API
>>>
>>>   A full log can be found at .../build/mesa3d-19.0.2/build/meson-logs/meson-log.txt
>>>   make[1]: *** [package/pkg-generic.mk:231: .../build/mesa3d-19.0.2/.stamp_configured]
>>>
>>> The configure failure could be 'fixed' by the following quick patch:
>>>
>>> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
>>> index 5244545584..773defbfa1 100644
>>> --- a/package/mesa3d/mesa3d.mk
>>> +++ b/package/mesa3d/mesa3d.mk
>>> @@ -153,7 +153,7 @@ endif
>>>
>>>  # Always enable OpenGL:
>>>  #   - it is needed for GLES (mesa3d's meson.build is a bit weird)
>>> -MESA3D_CONF_OPTS += -Dopengl=true -Dglx=dri
>>> +MESA3D_CONF_OPTS += -Dopengl=true  
>>
>> Ack.
>> Also, I'll replace -Dglx=auto by -Dglx=dri which is the only option that can be
>> supported currently by the Buildroot package.
>> All other options (xlib and xlib-gallium) are not supported by the current
>> packaging.
> 
> So use the glx option only in case platform x11 is selected?
> 
>>
>>>
>>>  # libva and mesa3d have a circular dependency
>>>  # we do not need libva support in mesa3d, therefore disable this option
>>>
>>>
>>> With this patch applied the configure step succeeds, but the compile step
>>> fails with:
>>>
>>> [29/843] Generating vtn_gather_types.c with a custom command.
>>> FAILED: src/compiler/spirv/vtn_gather_types.c
>>> .../host/bin/python3 ../src/compiler/spirv/vtn_gather_types_c.py ../src/compiler/spirv/spirv.core.grammar.json src/compiler/spirv/vtn_gather_types.c
>>> Traceback (most recent call last):
>>>   File "../src/compiler/spirv/vtn_gather_types_c.py", line 29, in <module>
>>>     from mako.template import Template
>>> ModuleNotFoundError: No module named 'mako'
>>> [30/843] Generating spirv_info.c with a custom command.
>>> FAILED: src/compiler/spirv/spirv_info.c
>>> .../host/bin/python3 ../src/compiler/spirv/spirv_info_c.py ../src/compiler/spirv/spirv.core.grammar.json src/compiler/spirv/spirv_info.c
>>> Traceback (most recent call last):
>>>   File "../src/compiler/spirv/spirv_info_c.py", line 29, in <module>
>>>     from mako.template import Template
>>> ModuleNotFoundError: No module named 'mako'
>>> [35/843] Generating ir_expression_oper....h with a meson_exe.py custom command.
>>> FAILED: src/compiler/ir_expression_operation.h
>>> .../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_f99bf283dabcb83e5389be4bfb906240d67be6d7.dat
>>> Traceback (most recent call last):
>>>   File "../src/compiler/glsl/ir_expression_operation.py", line 23, in <module>
>>>     import mako.template
>>> ModuleNotFoundError: No module named 'mako'
>>> [36/843] Generating nir_constant_expre....c with a meson_exe.py custom command.
>>> FAILED: src/compiler/nir/nir_constant_expressions.c
>>> .../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_16aba73c258f517db1423ca1fcbcc47a6f58541b.dat
>>> Traceback (most recent call last):
>>>   File "../src/compiler/nir/nir_constant_expressions.py", line 424, in <module>
>>>     from mako.template import Template
>>> ModuleNotFoundError: No module named 'mako'
>>> [37/843] Generating nir_builder_opcodes.h with a meson_exe.py custom command.
>>> FAILED: src/compiler/nir/nir_builder_opcodes.h
>>> .../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_9519d8170e7bc8796b8caf294704c1ae9b9beb60.dat
>>> Traceback (most recent call last):
>>>   File "../src/compiler/nir/nir_builder_opcodes_h.py", line 98, in <module>
>>>     from mako.template import Template
>>> ModuleNotFoundError: No module named 'mako'
>>> [38/843] Generating nir_opcodes.h with a meson_exe.py custom command.
>>> FAILED: src/compiler/nir/nir_opcodes.h
>>> .../host/bin/meson --internal exe .../build/mesa3d-19.0.2/build/meson-private/meson_exe_python3_7d8bc70fe02c4d6671c051c06b6c456b05bca90c.dat
>>> Traceback (most recent call last):
>>>   File "../src/compiler/nir/nir_opcodes_h.py", line 45, in <module>
>>>     from mako.template import Template
>>> ModuleNotFoundError: No module named 'mako'
>>> [45/843] Generating format_srgb with a meson_exe.py custom command.
>>> ninja: build stopped: subcommand failed.
>>> make[1]: *** [package/pkg-generic.mk:241: .../build/mesa3d-19.0.2/.stamp_built] Error 1
>>>
>>>
>>> Seems the patch 0002-meson-use-generated-files-if-already-present-in-the-.patch is
>>> not enough to prevent all python-mako based file generation calls...  
>>
>> Indeed, this doesn't work when some drivers (like etnaviv) are enabled.
>>
>> I don't see other solution than adding a new package python3-mako like it was
>> done for python3-setuptools.
>> See: http://lists.busybox.net/pipermail/buildroot/2019-April/247707.html
>>
>> It's pity that the meson build system can't use existing generated files present
>> in the release archive.
> 
> Did a 'hack' patch to avoid file generation (not upstreamable, but for a first try):
> 

I tried but it doesn't work for all cases.
Instead, I added a host-python3-mako package.

See http://patchwork.ozlabs.org/project/buildroot/list/?series=106301

Best regards,
Romain
diff mbox series

Patch

diff --git a/package/mesa3d/0002-configure.ac-invert-order-for-wayland-scanner-check.patch b/package/mesa3d/0002-configure.ac-invert-order-for-wayland-scanner-check.patch
deleted file mode 100644
index 5135528795..0000000000
--- a/package/mesa3d/0002-configure.ac-invert-order-for-wayland-scanner-check.patch
+++ /dev/null
@@ -1,51 +0,0 @@ 
-From ef96bac7cbbb11b98606864ead0f731dd5b71d5a Mon Sep 17 00:00:00 2001
-From: Gustavo Zacarias <gustavo@zacarias.com.ar>
-Date: Thu, 17 Nov 2016 15:36:54 -0300
-Subject: [PATCH] configure.ac: invert order for wayland-scanner check
-
-When cross-compiling the .pc file might point to the wrong
-wayland-scanner binary (target rather than host) resulting in a
-non-executable and wrong scanner.
-Try searching the PATH first, and if that fails fall back into
-pkg-config.
-
-[Vincent: tweak patch for 17.1.1 version]
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
-[Romain: rebase on 18.1]
-Signed-off-by: Romain Naour <romain.naour@gmail.com>
-[Bernd rebase on 18.3]
-Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
----
- configure.ac | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index f1fbdcc6c7..dcf87e7dd6 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1841,17 +1841,16 @@
-         fi
-         WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
- 
--        PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner],
-+        AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:])
-+        if test "x$WAYLAND_SCANNER" = x; then
-+                PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner],
-                           WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`,
-                           WAYLAND_SCANNER='')
-+        fi
-         PKG_CHECK_EXISTS([wayland-scanner >= 1.15],
-                           AC_SUBST(SCANNER_ARG, 'private-code'),
-                           AC_SUBST(SCANNER_ARG, 'code'))
- 
--        if test "x$WAYLAND_SCANNER" = x; then
--            AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:])
--        fi
--
-         if test "x$WAYLAND_SCANNER" = "x:"; then
-                 AC_MSG_ERROR([wayland-scanner is needed to compile the wayland platform])
-         fi
--- 
-2.14.3
diff --git a/package/mesa3d/0002-meson-use-generated-files-if-already-present-in-the-.patch b/package/mesa3d/0002-meson-use-generated-files-if-already-present-in-the-.patch
new file mode 100644
index 0000000000..0350d07b08
--- /dev/null
+++ b/package/mesa3d/0002-meson-use-generated-files-if-already-present-in-the-.patch
@@ -0,0 +1,81 @@ 
+From 56a9b8964435e88ad869a149cc8f087eea7c4aa6 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@smile.fr>
+Date: Sun, 14 Apr 2019 19:57:25 +0200
+Subject: [PATCH] meson: use generated files if already present in the release
+ archive
+
+meson buildsystem behaviour doesn't is not the same as for autotools
+buildsystem about generated files. With autotools if a generated file
+exist it is not regenerated but with meson it is unconditionnaly
+generated. These files are provided as part of a release archive.
+
+Modify the custom_target using ir_expression_operation.py in order to
+use generated files present in the release archive.
+
+The python script ir_expression_operation.py used to build the header
+file ir_expression_operation_constant.h is using python mako module.
+This module must be installed in order to be able to build mesa from
+the git repository.
+
+Signed-off-by: Romain Naour <romain.naour@smile.fr>
+---
+ meson.build                   | 8 +++++++-
+ src/compiler/glsl/meson.build | 2 ++
+ src/compiler/meson.build      | 1 +
+ 3 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 53d02e31097..6c4f1508855 100644
+--- a/meson.build
++++ b/meson.build
+@@ -728,8 +728,14 @@ from distutils.version import StrictVersion
+ import mako
+ assert StrictVersion(mako.__version__) > StrictVersion("0.8.0")
+   ''')
++
++# Check if we build from a release archive that already contains pregenerated source files.
++has_pregenerated_files = run_command('[', '-f', join_paths(meson.source_root(), 'src/mesa/main/format_unpack.c'), ']')
++
+ if has_mako.returncode() != 0
+-  error('Python (3.x) mako module >= 0.8.0 required to build mesa.')
++  if has_pregenerated_files.returncode() != 0
++    error('Python (3.x) mako module >= 0.8.0 required to build mesa.')
++  endif
+ endif
+ 
+ if cc.get_id() == 'gcc' and cc.version().version_compare('< 4.4.6')
+diff --git a/src/compiler/glsl/meson.build b/src/compiler/glsl/meson.build
+index 8096f2d048e..3b3ec274785 100644
+--- a/src/compiler/glsl/meson.build
++++ b/src/compiler/glsl/meson.build
+@@ -43,6 +43,7 @@ ir_expression_operation_constant_h = custom_target(
+   output : 'ir_expression_operation_constant.h',
+   command : [prog_python, '@INPUT@', 'constant'],
+   capture : true,
++  build_always_stale : false,
+ )
+ 
+ ir_expression_operation_strings_h = custom_target(
+@@ -51,6 +52,7 @@ ir_expression_operation_strings_h = custom_target(
+   output : 'ir_expression_operation_strings.h',
+   command : [prog_python, '@INPUT@', 'strings'],
+   capture : true,
++  build_always_stale : false,
+ )
+ 
+ float64_glsl_h = custom_target(
+diff --git a/src/compiler/meson.build b/src/compiler/meson.build
+index 0f8f3c12966..ff254b65051 100644
+--- a/src/compiler/meson.build
++++ b/src/compiler/meson.build
+@@ -42,6 +42,7 @@ ir_expression_operation_h = custom_target(
+   output : 'ir_expression_operation.h',
+   command : [prog_python, '@INPUT@', 'enum'],
+   capture : true,
++  build_always_stale : false,
+ )
+ 
+ libcompiler = static_library(
+-- 
+2.20.1
+
diff --git a/package/mesa3d/0003-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch b/package/mesa3d/0003-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch
new file mode 100644
index 0000000000..072d79a213
--- /dev/null
+++ b/package/mesa3d/0003-meson-Set-proper-value-for-LIBCLC_INCLUDEDIR.patch
@@ -0,0 +1,39 @@ 
+From 7b46756a99aca7f27a45c3b99460f088570f6f53 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@smile.fr>
+Date: Wed, 17 Apr 2019 23:07:42 +0200
+Subject: [PATCH] meson: Set proper value for LIBCLC_INCLUDEDIR
+
+LIBCLC_INCLUDEDIR is the location where mesa3d OpenCL implementation
+will look for OpenCL "headers" on the target, when building the OpenCL
+kernels.
+
+The value returned by pkg-config for includedir is relevant when
+cross-compiling, on the build machine. But in this specific case, we
+really need a value that is valid on the target.
+
+Those headers are installed by the libclc package in /usr/share so
+that they are not removed by Buildroot target-finalize logic.
+
+Based on the patch for autotools provided by Valentin Korenblit.
+
+Signed-off-by: Romain Naour <romain.naour@smile.fr>
+---
+ src/gallium/state_trackers/clover/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gallium/state_trackers/clover/meson.build b/src/gallium/state_trackers/clover/meson.build
+index 62ac5f5278d..ecdeb39669c 100644
+--- a/src/gallium/state_trackers/clover/meson.build
++++ b/src/gallium/state_trackers/clover/meson.build
+@@ -49,7 +49,7 @@ libclllvm = static_library(
+   include_directories : clover_incs,
+   cpp_args : [
+     cpp_vis_args,
+-    '-DLIBCLC_INCLUDEDIR="@0@/"'.format(dep_clc.get_pkgconfig_variable('includedir')),
++    '-DLIBCLC_INCLUDEDIR="/usr/share"',
+     '-DLIBCLC_LIBEXECDIR="@0@/"'.format(dep_clc.get_pkgconfig_variable('libexecdir')),
+     '-DCLANG_RESOURCE_DIR="@0@"'.format(join_paths(
+       dep_llvm.get_configtool_variable('libdir'), 'clang',
+-- 
+2.20.1
+
diff --git a/package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch b/package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch
deleted file mode 100644
index 42ae826a36..0000000000
--- a/package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch
+++ /dev/null
@@ -1,37 +0,0 @@ 
-From 94bceeb621e36f3188c6246a763def8695526578 Mon Sep 17 00:00:00 2001
-From: Valentin Korenblit <valentinkorenblit@gmail.com>
-Date: Sat, 20 Oct 2018 10:56:23 +0200
-Subject: [PATCH] Set proper value for LIBCLC_INCLUDEDIR
-
-LIBCLC_INCLUDEDIR is the location where mesa3d OpenCL implementation
-will look for OpenCL "headers" on the target, when building the OpenCL
-kernels.
-
-The value returned by pkg-config for includedir is relevant when
-cross-compiling, on the build machine. But in this specific case, we
-really need a value that is valid on the target.
-
-Those headers are installed by the libclc package in /usr/share so
-that they are not removed by Buildroot target-finalize logic.
-
-Signed-off-by: Valentin Korenblit <valentinkorenblit@gmail.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 864dcae..cc2390b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2429,7 +2429,7 @@ if test "x$enable_opencl" = xyes; then
-                     PKG_CONFIG_PATH environment variable.
-                     By default libclc.pc is installed to /usr/local/share/pkgconfig/])
-     else
--        LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
-+        LIBCLC_INCLUDEDIR="/usr/share"
-         LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
-         AC_SUBST([LIBCLC_INCLUDEDIR])
-         AC_SUBST([LIBCLC_LIBEXECDIR])
--- 
-2.7.4
-
diff --git a/package/mesa3d/0004-meson-use-wayland-scanner-provided-by-wayland-scanne.patch b/package/mesa3d/0004-meson-use-wayland-scanner-provided-by-wayland-scanne.patch
new file mode 100644
index 0000000000..784b27c4a2
--- /dev/null
+++ b/package/mesa3d/0004-meson-use-wayland-scanner-provided-by-wayland-scanne.patch
@@ -0,0 +1,52 @@ 
+From 0e107f7bac8d84d8fb2bb5b83bfb4474348a82c1 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@smile.fr>
+Date: Wed, 17 Apr 2019 22:47:05 +0200
+Subject: [PATCH] meson: use wayland-scanner provided by wayland-scanner-path
+
+When cross-compiling the .pc file might point to the wrong
+wayland-scanner binary (target rather than host) resulting in a
+non-executable and wrong scanner.
+First try by using the path provided by wayland-scanner-path,
+and if that fails fall back into pkg-config.
+
+Based on the patch for autotools provided by Gustavo Zacarias.
+
+Signed-off-by: Romain Naour <romain.naour@smile.fr>
+---
+ meson.build       | 5 ++++-
+ meson_options.txt | 6 ++++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 6c4f1508855..ef0532b2cfb 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1319,7 +1319,10 @@ endif
+ 
+ if with_platform_wayland
+   dep_wl_scanner = dependency('wayland-scanner', native: true)
+-  prog_wl_scanner = find_program(dep_wl_scanner.get_pkgconfig_variable('wayland_scanner'))
++  prog_wl_scanner = get_option('wayland-scanner-path')
++  if prog_wl_scanner == ''
++    prog_wl_scanner = find_program(dep_wl_scanner.get_pkgconfig_variable('wayland_scanner'))
++  endif
+   if dep_wl_scanner.version().version_compare('>= 1.15')
+     wl_scanner_arg = 'private-code'
+   else
+diff --git a/meson_options.txt b/meson_options.txt
+index ccf70659ff7..59ff8df8337 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -324,3 +324,9 @@ option(
+   value : true,
+   description : 'Enable direct rendering in GLX and EGL for DRI',
+ )
++option(
++  'wayland-scanner-path',
++  type : 'string',
++  value : '',
++  description : 'Locations to wayland-scanner binary. Default: use path from pkg-config'
++)
+-- 
+2.20.1
+
diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
index eba218efb2..df24acea21 100644
--- a/package/mesa3d/Config.in
+++ b/package/mesa3d/Config.in
@@ -87,8 +87,7 @@  config BR2_PACKAGE_MESA3D_NEEDS_XA
 	bool
 
 # Quote from mesa3d meson.build: "kmsro driver requires one or more
-# renderonly drivers (vc4, etnaviv, freedreno)". But only vc4 support
-# is available by using the (deprecated) autotools build system.
+# renderonly drivers (vc4, etnaviv, freedreno)".
 config BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
 	bool
 
diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
index c8ca9a0d0f..5244545584 100644
--- a/package/mesa3d/mesa3d.mk
+++ b/package/mesa3d/mesa3d.mk
@@ -25,27 +25,19 @@  MESA3D_DEPENDENCIES = \
 	libdrm \
 	zlib
 
-# Disable assembly usage.
-MESA3D_CONF_OPTS = --disable-asm
-
-# autotools are deprecated in favour of meson, for now force autotools
-MESA3D_CONF_OPTS += --enable-autotools
-
-# Disable static, otherwise configure will fail with: "Cannot enable both static
-# and shared."
-ifeq ($(BR2_SHARED_STATIC_LIBS),y)
-MESA3D_CONF_OPTS += --disable-static
-endif
+MESA3D_CONF_OPTS = \
+	-Dasm=false \
+	-Dgallium-omx=disabled \
+	-Dpower8=false \
+	-Dvalgrind=false
 
 ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y)
 MESA3D_DEPENDENCIES += host-llvm llvm
-MESA3D_CONF_OPTS += \
-	--with-llvm-prefix=$(STAGING_DIR)/usr \
-	--enable-llvm-shared-libs \
-	--enable-llvm
+MESA3D_CONF_ENV += LLVM_CONFIG=$(STAGING_DIR)/usr/bin/llvm-config
+MESA3D_CONF_OPTS += -Dllvm=true
 else
 # Avoid automatic search of llvm-config
-MESA3D_CONF_OPTS += --disable-llvm
+MESA3D_CONF_OPTS += -Dllvm=false
 endif
 
 # Disable opencl-icd: OpenCL lib will be named libOpenCL instead of
@@ -53,11 +45,9 @@  endif
 ifeq ($(BR2_PACKAGE_MESA3D_OPENCL),y)
 MESA3D_PROVIDES += libopencl
 MESA3D_DEPENDENCIES += clang libclc
-MESA3D_CONF_OPTS += --enable-opencl \
-	--disable-opencl-icd \
-	--with-clang-libdir=$(STAGING_DIR)/usr/lib
+MESA3D_CONF_OPTS += -Dgallium-opencl=standalone
 else
-MESA3D_CONF_OPTS += --disable-opencl
+MESA3D_CONF_OPTS += -Dgallium-opencl=disabled
 endif
 
 ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS),y)
@@ -82,16 +72,17 @@  MESA3D_DEPENDENCIES += \
 	xlib_libXxf86vm \
 	xorgproto \
 	libxcb
-MESA3D_CONF_OPTS += --enable-glx --disable-mangling
+# Disable-mangling not yet supported by meson build system.
+MESA3D_CONF_OPTS += -Dglx=auto
 ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_XA),y)
-MESA3D_CONF_OPTS += --enable-xa
+MESA3D_CONF_OPTS += -Dgallium-xa=true
 else
-MESA3D_CONF_OPTS += --disable-xa
+MESA3D_CONF_OPTS += -Dgallium-xa=false
 endif
 else
 MESA3D_CONF_OPTS += \
-	--disable-glx \
-	--disable-xa
+	-Dglx=disabled \
+	-Dgallium-xa=false
 endif
 
 # Drivers
@@ -111,63 +102,62 @@  MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST) += swrast
 MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I915)   += i915
 MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I965)   += i965
 MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU) += nouveau
-MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON) += radeon
+MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON) += r100
 # Vulkan Drivers
 MESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL)   += intel
 
 ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER),)
 MESA3D_CONF_OPTS += \
-	--without-gallium-drivers \
-	--disable-gallium-extra-hud
+	-Dgallium-drivers= \
+	-Dgallium-extra-hud=false
 else
 MESA3D_CONF_OPTS += \
-	--enable-shared-glapi \
-	--with-gallium-drivers=$(subst $(space),$(comma),$(MESA3D_GALLIUM_DRIVERS-y)) \
-	--enable-gallium-extra-hud
+	-Dshared-glapi=true \
+	-Dgallium-drivers=$(subst $(space),$(comma),$(MESA3D_GALLIUM_DRIVERS-y)) \
+	-Dgallium-extra-hud=true
 endif
 
 ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),)
 MESA3D_CONF_OPTS += \
-	--without-dri-drivers --disable-dri3
+	-Ddri-drivers= -Ddri3=false
 else
 ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE),y)
 MESA3D_DEPENDENCIES += xlib_libxshmfence
-MESA3D_CONF_OPTS += --enable-dri3
+MESA3D_CONF_OPTS += -Ddri3=true
 else
-MESA3D_CONF_OPTS += --disable-dri3
+MESA3D_CONF_OPTS += -Ddri3=false
 endif
 MESA3D_CONF_OPTS += \
-	--enable-shared-glapi \
-	--enable-driglx-direct \
-	--with-dri-driverdir=/usr/lib/dri \
-	--with-dri-drivers=$(subst $(space),$(comma),$(MESA3D_DRI_DRIVERS-y))
+	-Dshared-glapi=true \
+	-Dglx-direct=true \
+	-Ddri-drivers=$(subst $(space),$(comma),$(MESA3D_DRI_DRIVERS-y))
 endif
 
 ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),)
 MESA3D_CONF_OPTS += \
-	--without-vulkan-drivers
+	-Dvulkan-drivers=
 else
 MESA3D_DEPENDENCIES += xlib_libxshmfence
 MESA3D_CONF_OPTS += \
-	--enable-dri3 \
-	--with-vulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
+	-Ddri3=true \
+	-Dvulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y))
 endif
 
 # APIs
 
 ifeq ($(BR2_PACKAGE_MESA3D_OSMESA_CLASSIC),y)
-MESA3D_CONF_OPTS += --enable-osmesa
+MESA3D_CONF_OPTS += -Dosmesa=classic
 else
-MESA3D_CONF_OPTS += --disable-osmesa
+MESA3D_CONF_OPTS += -Dosmesa=none
 endif
 
 # Always enable OpenGL:
-#   - it is needed for GLES (mesa3d's ./configure is a bit weird)
-MESA3D_CONF_OPTS += --enable-opengl --enable-dri
+#   - it is needed for GLES (mesa3d's meson.build is a bit weird)
+MESA3D_CONF_OPTS += -Dopengl=true -Dglx=dri
 
 # libva and mesa3d have a circular dependency
 # we do not need libva support in mesa3d, therefore disable this option
-MESA3D_CONF_OPTS += --disable-va
+MESA3D_CONF_OPTS += -Dgallium-va=false
 
 # libGL is only provided for a full xorg stack
 ifeq ($(BR2_PACKAGE_XORG7),y)
@@ -194,57 +184,58 @@  endif
 ifeq ($(BR2_PACKAGE_WAYLAND),y)
 MESA3D_DEPENDENCIES += wayland wayland-protocols
 MESA3D_PLATFORMS += wayland
+MESA3D_CONF_OPTS += -Dwayland-scanner-path=$(HOST_DIR)/bin/wayland-scanner
 endif
 ifeq ($(BR2_PACKAGE_XORG7),y)
 MESA3D_PLATFORMS += x11
 endif
 
 MESA3D_CONF_OPTS += \
-	--with-platforms=$(subst $(space),$(comma),$(MESA3D_PLATFORMS))
+	-Dplatforms=$(subst $(space),$(comma),$(MESA3D_PLATFORMS))
 
 ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y)
 MESA3D_PROVIDES += libegl
 MESA3D_CONF_OPTS += \
-	--enable-gbm \
-	--enable-egl
+	-Dgbm=true \
+	-Degl=true
 else
 MESA3D_CONF_OPTS += \
-	--disable-egl
+	-Degl=true=false
 endif
 
 ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_ES),y)
 MESA3D_PROVIDES += libgles
-MESA3D_CONF_OPTS += --enable-gles1 --enable-gles2
+MESA3D_CONF_OPTS += -Dgles1=true -Dgles2=true
 else
-MESA3D_CONF_OPTS += --disable-gles1 --disable-gles2
+MESA3D_CONF_OPTS += -Dgles1=false -Dgles2=false
 endif
 
 ifeq ($(BR2_PACKAGE_MESA3D_XVMC),y)
 MESA3D_DEPENDENCIES += xlib_libXvMC
-MESA3D_CONF_OPTS += --enable-xvmc
+MESA3D_CONF_OPTS += -Dgallium-xvmc=true
 else
-MESA3D_CONF_OPTS += --disable-xvmc
+MESA3D_CONF_OPTS += -Dgallium-xvmc=false
 endif
 
 ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
-MESA3D_CONF_OPTS += --enable-libunwind
+MESA3D_CONF_OPTS += -Dlibunwind=true
 MESA3D_DEPENDENCIES += libunwind
 else
-MESA3D_CONF_OPTS += --disable-libunwind
+MESA3D_CONF_OPTS += -Dlibunwind=false
 endif
 
 ifeq ($(BR2_PACKAGE_LIBVDPAU),y)
 MESA3D_DEPENDENCIES += libvdpau
-MESA3D_CONF_OPTS += --enable-vdpau
+MESA3D_CONF_OPTS += -Dgallium-vdpau=true
 else
-MESA3D_CONF_OPTS += --disable-vdpau
+MESA3D_CONF_OPTS += -Dgallium-vdpau=false
 endif
 
 ifeq ($(BR2_PACKAGE_LM_SENSORS),y)
-MESA3D_CONF_OPTS += --enable-lmsensors
+MESA3D_CONF_OPTS += -Dlmsensors=true
 MESA3D_DEPENDENCIES += lm-sensors
 else
-MESA3D_CONF_OPTS += --disable-lmsensors
+MESA3D_CONF_OPTS += -Dlmsensors=false
 endif
 
-$(eval $(autotools-package))
+$(eval $(meson-package))