From: Peter Seiderer <ps.report@gmx.net>
To: buildroot@busybox.net
Subject: [Buildroot] [RFC v2 6/7] package/mesa3d: switch build system to meson
Date: Thu, 25 Apr 2019 22:56:21 +0200 [thread overview]
Message-ID: <20190425225621.448aaaeb@gmx.net> (raw)
In-Reply-To: <20190417214348.15685-6-romain.naour@smile.fr>
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
next prev parent reply other threads:[~2019-04-25 20:56 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-17 21:43 [Buildroot] [RFC v2 1/7] package/mesa3d: rename OSMesa option Romain Naour
2019-04-17 21:43 ` [Buildroot] [RFC v2 2/7] package/mesa3d: add OSMesa classic needs dri swrast Romain Naour
2019-04-17 21:43 ` [Buildroot] [RFC v2 3/7] package/mesa3d: Only one swrast provider can be built Romain Naour
2019-04-17 21:43 ` [Buildroot] [RFC v2 4/7] package/mesa3d: add xvmc option Romain Naour
2019-04-17 21:43 ` [Buildroot] [RFC v2 5/7] package/mesa3d: Gallium xa state tracker is only available for nouveau and svga Gallium drivers Romain Naour
2019-04-17 21:43 ` [Buildroot] [RFC v2 6/7] package/mesa3d: switch build system to meson Romain Naour
2019-04-25 20:56 ` Peter Seiderer [this message]
2019-04-30 11:14 ` Romain Naour
2019-04-30 21:14 ` Peter Seiderer
2019-04-30 21:40 ` Bernd Kuhls
2019-05-06 9:57 ` Romain Naour
2019-04-17 21:43 ` [Buildroot] [RFC v2 7/7] package/mesa3d: select kmsro for etnaviv Romain Naour
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190425225621.448aaaeb@gmx.net \
--to=ps.report@gmx.net \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.