[v3,8/9] package/mesa3d: switch build system to meson
diff mbox series

Message ID 20190506095451.26522-8-romain.naour@smile.fr
State Superseded
Headers show
Series
  • [v3,1/9] package/python3-mako: new package
Related show

Commit Message

Romain Naour May 6, 2019, 9:54 a.m. UTC
From: Bernd Kuhls <bernd.kuhls@t-online.de>

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.

Add a new depedency on host-python3-mako since we can't use
generated headers from the release archive [2].

[1] http://patchwork.ozlabs.org/patch/1084248/
[2] http://lists.busybox.net/pipermail/buildroot/2019-April/249057.html

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
Cc: Peter Seiderer <ps.report@gmx.net>
---
v2: rebase on mesa 19.0.3
Fix typo -Degl=true=false
Fixes: build without x11 by removing -Dglx=dri (Peter Seiderer)
Doesn't use -Dglx=auto, instead use the new BR2_PACKAGE_MESA3D_OPENGL_GLX
Remove workaround patch for python-mako, add host-python3-mako dependency
---
 ...vert-order-for-wayland-scanner-check.patch |  51 --------
 ...d-scanner-provided-by-wayland-scanne.patch |  52 ++++++++
 ...t-proper-value-for-LIBCLC_INCLUDEDIR.patch |  39 ++++++
 .../mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch   |  37 ------
 package/mesa3d/Config.in                      |   3 +-
 package/mesa3d/mesa3d.mk                      | 118 +++++++++---------
 6 files changed, 149 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-wayland-scanner-provided-by-wayland-scanne.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

Comments

Romain Naour June 25, 2019, 7:50 a.m. UTC | #1
Hi,

Le 06/05/2019 à 11:54, Romain Naour a écrit :
> From: Bernd Kuhls <bernd.kuhls@t-online.de>
> 
> 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.
> 
> Add a new depedency on host-python3-mako since we can't use
> generated headers from the release archive [2].
> 
> [1] http://patchwork.ozlabs.org/patch/1084248/
> [2] http://lists.busybox.net/pipermail/buildroot/2019-April/249057.html

It would be great to have reviewers on this series, otherwise we are stuck in
mesa 19.0.x. Also we need meson to have the latest feature added after autotools
freeze, see [1].

[1] https://bugs.busybox.net/show_bug.cgi?id=11906

Best regards,
Romain

> 
> Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> Signed-off-by: Romain Naour <romain.naour@smile.fr>
> Cc: Peter Seiderer <ps.report@gmx.net>
> ---
> v2: rebase on mesa 19.0.3
> Fix typo -Degl=true=false
> Fixes: build without x11 by removing -Dglx=dri (Peter Seiderer)
> Doesn't use -Dglx=auto, instead use the new BR2_PACKAGE_MESA3D_OPENGL_GLX
> Remove workaround patch for python-mako, add host-python3-mako dependency
> ---
>  ...vert-order-for-wayland-scanner-check.patch |  51 --------
>  ...d-scanner-provided-by-wayland-scanne.patch |  52 ++++++++
>  ...t-proper-value-for-LIBCLC_INCLUDEDIR.patch |  39 ++++++
>  .../mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch   |  37 ------
>  package/mesa3d/Config.in                      |   3 +-
>  package/mesa3d/mesa3d.mk                      | 118 +++++++++---------
>  6 files changed, 149 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-wayland-scanner-provided-by-wayland-scanne.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
> 
> 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-wayland-scanner-provided-by-wayland-scanne.patch b/package/mesa3d/0002-meson-use-wayland-scanner-provided-by-wayland-scanne.patch
> new file mode 100644
> index 0000000000..784b27c4a2
> --- /dev/null
> +++ b/package/mesa3d/0002-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/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/Config.in b/package/mesa3d/Config.in
> index ceed097d71..569628d28b 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 426676a520..81074f96a6 100644
> --- a/package/mesa3d/mesa3d.mk
> +++ b/package/mesa3d/mesa3d.mk
> @@ -21,31 +21,24 @@ MESA3D_PROVIDES =
>  MESA3D_DEPENDENCIES = \
>  	host-bison \
>  	host-flex \
> +	host-python3-mako \
>  	expat \
>  	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 +46,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 +73,21 @@ MESA3D_DEPENDENCIES += \
>  	xlib_libXxf86vm \
>  	xorgproto \
>  	libxcb
> -MESA3D_CONF_OPTS += --enable-glx --disable-mangling
> +# Disable-mangling not yet supported by meson build system.
> +# glx:
> +#  dri          : dri based GLX requires at least one DRI driver || dri based GLX requires shared-glapi
> +#  xlib         : xlib conflicts with any dri driver
> +#  gallium-xlib : Gallium-xlib based GLX requires at least one gallium driver || Gallium-xlib based GLX requires softpipe or llvmpipe || gallium-xlib conflicts with any dri driver.
> +MESA3D_CONF_OPTS += -Dglx=dri
>  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 +107,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
> +#   - Building OpenGL ES without OpenGL is not supported, so always keep opengl enabled.
> +MESA3D_CONF_OPTS += -Dopengl=true
>  
>  # 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 +189,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=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))
>
James Hilliard June 25, 2019, 8:09 a.m. UTC | #2
On Mon, May 6, 2019 at 3:55 AM Romain Naour <romain.naour@smile.fr> wrote:
>
> From: Bernd Kuhls <bernd.kuhls@t-online.de>
>
> 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.
>
> Add a new depedency on host-python3-mako since we can't use
> generated headers from the release archive [2].
>
> [1] http://patchwork.ozlabs.org/patch/1084248/
> [2] http://lists.busybox.net/pipermail/buildroot/2019-April/249057.html
>
> Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> Signed-off-by: Romain Naour <romain.naour@smile.fr>
> Cc: Peter Seiderer <ps.report@gmx.net>
> ---
> v2: rebase on mesa 19.0.3
> Fix typo -Degl=true=false
> Fixes: build without x11 by removing -Dglx=dri (Peter Seiderer)
> Doesn't use -Dglx=auto, instead use the new BR2_PACKAGE_MESA3D_OPENGL_GLX
> Remove workaround patch for python-mako, add host-python3-mako dependency
> ---
>  ...vert-order-for-wayland-scanner-check.patch |  51 --------
>  ...d-scanner-provided-by-wayland-scanne.patch |  52 ++++++++
>  ...t-proper-value-for-LIBCLC_INCLUDEDIR.patch |  39 ++++++
>  .../mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch   |  37 ------
>  package/mesa3d/Config.in                      |   3 +-
>  package/mesa3d/mesa3d.mk                      | 118 +++++++++---------
>  6 files changed, 149 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-wayland-scanner-provided-by-wayland-scanne.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
>
> 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-wayland-scanner-provided-by-wayland-scanne.patch b/package/mesa3d/0002-meson-use-wayland-scanner-provided-by-wayland-scanne.patch
> new file mode 100644
> index 0000000000..784b27c4a2
> --- /dev/null
> +++ b/package/mesa3d/0002-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.
Try setting this meson config option instead:
-Dbuild.pkg_config_path=$(HOST_DIR)/lib/pkgconfig
> +
> +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/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/Config.in b/package/mesa3d/Config.in
> index ceed097d71..569628d28b 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 426676a520..81074f96a6 100644
> --- a/package/mesa3d/mesa3d.mk
> +++ b/package/mesa3d/mesa3d.mk
> @@ -21,31 +21,24 @@ MESA3D_PROVIDES =
>  MESA3D_DEPENDENCIES = \
>         host-bison \
>         host-flex \
> +       host-python3-mako \
>         expat \
>         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 +46,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 +73,21 @@ MESA3D_DEPENDENCIES += \
>         xlib_libXxf86vm \
>         xorgproto \
>         libxcb
> -MESA3D_CONF_OPTS += --enable-glx --disable-mangling
> +# Disable-mangling not yet supported by meson build system.
> +# glx:
> +#  dri          : dri based GLX requires at least one DRI driver || dri based GLX requires shared-glapi
> +#  xlib         : xlib conflicts with any dri driver
> +#  gallium-xlib : Gallium-xlib based GLX requires at least one gallium driver || Gallium-xlib based GLX requires softpipe or llvmpipe || gallium-xlib conflicts with any dri driver.
> +MESA3D_CONF_OPTS += -Dglx=dri
>  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 +107,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
> +#   - Building OpenGL ES without OpenGL is not supported, so always keep opengl enabled.
> +MESA3D_CONF_OPTS += -Dopengl=true
>
>  # 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 +189,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=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))
> --
> 2.20.1
>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Bernd Kuhls June 25, 2019, 8:14 p.m. UTC | #3
Am Tue, 25 Jun 2019 09:50:14 +0200 schrieb Romain Naour:

> It would be great to have reviewers on this series, otherwise we are
> stuck in mesa 19.0.x. Also we need meson to have the latest feature
> added after autotools freeze, see [1].

Hi Romain,

these mesa3d options

$ grep MESA3D .config | grep -v \#
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_DRI_DRIVER=y
BR2_PACKAGE_MESA3D_DRIVER=y
BR2_PACKAGE_MESA3D_DRI_DRIVER_I965=y
BR2_PACKAGE_MESA3D_OPENGL_EGL=y

result in a configure error:

Run-time dependency xcb found: NO (tried pkgconfig)

meson.build:1375:4: ERROR: Dependency "xcb" not found, tried pkgconfig

Regards, Bernd
Bernd Kuhls June 29, 2019, 5:32 p.m. UTC | #4
Am Tue, 25 Jun 2019 22:14:05 +0200 schrieb Bernd Kuhls:

> Run-time dependency xcb found: NO (tried pkgconfig)
> 
> meson.build:1375:4: ERROR: Dependency "xcb" not found, tried pkgconfig
> 
> Regards, Bernd

Hi,

fixed by v4.

Regards, Bernd

Patch
diff mbox series

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-wayland-scanner-provided-by-wayland-scanne.patch b/package/mesa3d/0002-meson-use-wayland-scanner-provided-by-wayland-scanne.patch
new file mode 100644
index 0000000000..784b27c4a2
--- /dev/null
+++ b/package/mesa3d/0002-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/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/Config.in b/package/mesa3d/Config.in
index ceed097d71..569628d28b 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 426676a520..81074f96a6 100644
--- a/package/mesa3d/mesa3d.mk
+++ b/package/mesa3d/mesa3d.mk
@@ -21,31 +21,24 @@  MESA3D_PROVIDES =
 MESA3D_DEPENDENCIES = \
 	host-bison \
 	host-flex \
+	host-python3-mako \
 	expat \
 	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 +46,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 +73,21 @@  MESA3D_DEPENDENCIES += \
 	xlib_libXxf86vm \
 	xorgproto \
 	libxcb
-MESA3D_CONF_OPTS += --enable-glx --disable-mangling
+# Disable-mangling not yet supported by meson build system.
+# glx:
+#  dri          : dri based GLX requires at least one DRI driver || dri based GLX requires shared-glapi
+#  xlib         : xlib conflicts with any dri driver
+#  gallium-xlib : Gallium-xlib based GLX requires at least one gallium driver || Gallium-xlib based GLX requires softpipe or llvmpipe || gallium-xlib conflicts with any dri driver.
+MESA3D_CONF_OPTS += -Dglx=dri
 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 +107,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
+#   - Building OpenGL ES without OpenGL is not supported, so always keep opengl enabled.
+MESA3D_CONF_OPTS += -Dopengl=true
 
 # 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 +189,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=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))