[Buildroot] [PATCH RFC 1/1] package/mesa3d: switch build system to meson

Romain Naour romain.naour at gmail.com
Sat Apr 13 13:05:40 UTC 2019


Hi Arnout, Bernd, All,

Le 13/04/2019 à 14:50, Arnout Vandecappelle a écrit :
> 
> 
> On 11/04/2019 20:31, Bernd Kuhls wrote:
>> Remove all patches related to autotools.
> 
>  Good that you do that, however...

I asked Bernd if he was working on a patch switching to meson build system [1].
He sent to the mailing list this patch which is a preliminary version.
I guess the commit log was not ready ;-)

I'm looking at it and I found already some issues.

[1] http://lists.busybox.net/pipermail/buildroot/2019-April/247587.html

Best regards,
Romain

> 
>>
>> Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
>> ---
>> This patch is only slightly tested, expect breakages ;)
>>
>>  ...vert-order-for-wayland-scanner-check.patch |  51 ---------
>>  .../mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch   |  37 ------
>>  package/mesa3d/Config.in                      |   3 -
>>  package/mesa3d/mesa3d.mk                      | 108 ++++++++----------
>>  4 files changed, 48 insertions(+), 151 deletions(-)
>>  delete mode 100644 package/mesa3d/0002-configure.ac-invert-order-for-wayland-scanner-check.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 at 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.
> 
>  AFAICS meson *only* looks at pkg-config for wayland-scanner. It does use
> 
> dep_wl_scanner = dependency('wayland-scanner', native: true)
> 
> so in theory it should look for the host wayland-scanner rather than the target
> one, but I'm not sure if we set up meson in a way that it would be able to make
> that distinction.
> 
> [snip]
>> --- 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 at 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.
> 
>  The meson infrastructure uses
> 
> '-DLIBCLC_INCLUDEDIR="@0@/"'.format(dep_clc.get_pkgconfig_variable('includedir'))
> 
> which I expect will give no joy either.
> 
> [snip]
>> diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in
>> index 3f44e94229..6070e5e039 100644
>> --- a/package/mesa3d/Config.in
>> +++ b/package/mesa3d/Config.in
>> @@ -129,7 +129,6 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600
>>  	select BR2_PACKAGE_LLVM_AMDGPU if BR2_PACKAGE_MESA3D_LLVM
>>  	select BR2_PACKAGE_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM
>>  	select BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS if BR2_PACKAGE_MESA3D_LLVM
>> -	select BR2_PACKAGE_MESA3D_NEEDS_XA
> 
>  Why does this get removed?
> 
>>  	help
>>  	  Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs.
>>  
>> @@ -151,7 +150,6 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI
>>  	select BR2_PACKAGE_LLVM_AMDGPU
>>  	select BR2_PACKAGE_ELFUTILS
>>  	select BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS
>> -	select BR2_PACKAGE_MESA3D_NEEDS_XA
>>  	help
>>  	  Driver for ATI/AMD Radeon HD7000/HD8000/Rx200 GPUs.
>>  
>> @@ -184,7 +182,6 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4
>>  	select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER
>>  	select BR2_PACKAGE_MESA3D_GALLIUM_KMSRO
>>  	select BR2_PACKAGE_LIBDRM_VC4
>> -	select BR2_PACKAGE_MESA3D_NEEDS_XA
>>  	select BR2_PACKAGE_MESA3D_OPENGL_EGL
>>  	help
>>  	  Driver for Broadcom VC4 (rpi2/3) GPUs.
>> diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
>> index 02c8a8a57a..67edab89af 100644
>> --- a/package/mesa3d/mesa3d.mk
>> +++ b/package/mesa3d/mesa3d.mk
>> @@ -21,31 +21,22 @@ MESA3D_PROVIDES =
>>  MESA3D_DEPENDENCIES = \
>>  	host-bison \
>>  	host-flex \
>> +	host-python3-mako \
> 
>  Why does this get added?
> 
>>  	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
> 
>  Why does this get added?
> 
>>  
>>  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 +44,9 @@ endif
>>  ifeq ($(BR2_PACKAGE_MESA3D_OPENCL),y)
>>  MESA3D_PROVIDES += libopencl
>>  MESA3D_DEPENDENCIES += clang libclc
>> -MESA3D_CONF_OPTS += --enable-opencl \
>> -	--disable-opencl-icd \
> 
>  No equivalent of this is needed?
> 
>> -	--with-clang-libdir=$(STAGING_DIR)/usr/lib
>> +MESA3D_CONF_OPTS += -Dgallium-opencl=standalone
> 
>  Can you explain what are the options, and why standalone is chosen?
> 
>>  else
>> -MESA3D_CONF_OPTS += --disable-opencl
>> +MESA3D_CONF_OPTS += -Dgallium-opencl=disabled
>>  endif
>>  
>>  ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS),y)
>> @@ -82,17 +71,17 @@ MESA3D_DEPENDENCIES += \
>>  	xlib_libXxf86vm \
>>  	xorgproto \
>>  	libxcb
>> -MESA3D_CONF_OPTS += --enable-glx --disable-mangling
>> +MESA3D_CONF_OPTS += -Dglx=auto
>>  # quote from mesa3d configure "Building xa requires at least one non swrast gallium driver."
>>  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
>> @@ -112,63 +101,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
> 
>  Please explain this in the commit message.
> 
>>  # 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 \
> 
>  No need to specify this anymore?
> 
> 
>  Regards,
>  Arnout
> 
>> -	--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),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
>> +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)
>> @@ -201,51 +189,51 @@ 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_XLIB_LIBXVMC),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))
>>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
> 



More information about the buildroot mailing list