diff options
25 files changed, 1422 insertions, 0 deletions
diff --git a/metadata/categories.conf b/metadata/categories.conf index acf5fa1..ab0966b 100644 --- a/metadata/categories.conf +++ b/metadata/categories.conf @@ -5,3 +5,4 @@ x11-themes  sys-devel  dev-util  dev-libs +x11-dri diff --git a/packages/x11-dri/mesa/files/0001-build-fix-building-vdpau-va.patch b/packages/x11-dri/mesa/files/0001-build-fix-building-vdpau-va.patch new file mode 100644 index 0000000..e08b607 --- /dev/null +++ b/packages/x11-dri/mesa/files/0001-build-fix-building-vdpau-va.patch @@ -0,0 +1,42 @@ +From a578f009d13ef004ba28c14ba9d9b3733175c3ef Mon Sep 17 00:00:00 2001 +From: Rasmus Thomsen <cogitri@exherbo.org> +Date: Thu, 26 Apr 2018 20:45:48 +0200 +Subject: [PATCH] build: fix building vdpau&va +Upstream: No, this most likely isn't the correct way to fix this. However, Mesa's +build system is massive, so I'll file a bug an see what upstream does about it :) + +In some situations underlinking occurs. We have to link to xcb-xfixes. +--- + src/gallium/targets/va/meson.build    | 2 +- + src/gallium/targets/vdpau/meson.build | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/gallium/targets/va/meson.build b/src/gallium/targets/va/meson.build +index 57d267e..1bd544f 100644 +--- a/src/gallium/targets/va/meson.build ++++ b/src/gallium/targets/va/meson.build +@@ -46,7 +46,7 @@ libva_gallium = shared_library( +     libpipe_loader_static, libws_null, libwsw, libswdri, libswkmsdri, +   ], +   dependencies : [ +-    dep_libdrm, dep_thread, driver_r600, driver_radeonsi, driver_nouveau, ++    dep_libdrm, dep_thread, driver_r600, driver_radeonsi, driver_nouveau, dep_xcb_xfixes, +   ], +   link_depends : va_link_depends, +   install : true, +diff --git a/src/gallium/targets/vdpau/meson.build b/src/gallium/targets/vdpau/meson.build +index 93969d8..9caffc2 100644 +--- a/src/gallium/targets/vdpau/meson.build ++++ b/src/gallium/targets/vdpau/meson.build +@@ -51,7 +51,7 @@ libvdpau_gallium = shared_library( +     libpipe_loader_static, libws_null, libwsw, libswdri, libswkmsdri, +   ], +   dependencies : [ +-    dep_thread, driver_r300, driver_r600, driver_radeonsi, driver_nouveau, ++    dep_thread, driver_r300, driver_r600, driver_radeonsi, driver_nouveau, dep_xcb_xfixes, +   ], +   link_depends : vdpau_link_depends, + ) +--  +2.17.0 + diff --git a/packages/x11-dri/mesa/files/045f38a50759bb225cb179703bc7050f6de752b1.patch b/packages/x11-dri/mesa/files/045f38a50759bb225cb179703bc7050f6de752b1.patch new file mode 100644 index 0000000..d39901e --- /dev/null +++ b/packages/x11-dri/mesa/files/045f38a50759bb225cb179703bc7050f6de752b1.patch @@ -0,0 +1,42 @@ +Source/Upstream: Git master, https://cgit.freedesktop.org/mesa/mesa/commit/?id=045f38a50759bb225cb179703bc7050f6de752b1 +Reason: Collides with files installed by vulkan-loader: https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/ + +From 045f38a50759bb225cb179703bc7050f6de752b1 Mon Sep 17 00:00:00 2001 +From: Matt Turner <mattst88@gmail.com> +Date: Mon, 23 Jan 2017 16:48:01 -0800 +Subject: vulkan: Don't install vk_platform.h or vulkan.h. + +These files belong to the vulkan loader. + +Reviewed-by: Emil Velikov <emil.velikov@collabora.com> + +diff --git a/src/intel/vulkan/Makefile.am b/src/intel/vulkan/Makefile.am +index fba3d66..95f276e 100644 +--- a/src/intel/vulkan/Makefile.am ++++ b/src/intel/vulkan/Makefile.am +@@ -23,9 +23,11 @@ include Makefile.sources +  + vulkan_includedir = $(includedir)/vulkan +  +-vulkan_include_HEADERS = \ ++noinst_HEADERS = \ + 	$(top_srcdir)/include/vulkan/vk_platform.h \ +-	$(top_srcdir)/include/vulkan/vulkan.h \ ++	$(top_srcdir)/include/vulkan/vulkan.h ++ ++vulkan_include_HEADERS = \ + 	$(top_srcdir)/include/vulkan/vulkan_intel.h +  + lib_LTLIBRARIES = libvulkan_intel.la +@@ -189,7 +191,7 @@ libvulkan_test_la_LIBADD = $(VULKAN_LIB_DEPS) +  + include $(top_srcdir)/install-lib-links.mk +  +-noinst_HEADERS = \ ++noinst_HEADERS += \ + 	tests/state_pool_test_helper.h +  + LDADD = \ +--  +cgit v0.10.2 + diff --git a/packages/x11-dri/mesa/files/1d01b52d761227c9675b2785cc242ec51e803e84.patch b/packages/x11-dri/mesa/files/1d01b52d761227c9675b2785cc242ec51e803e84.patch new file mode 100644 index 0000000..a81d32f --- /dev/null +++ b/packages/x11-dri/mesa/files/1d01b52d761227c9675b2785cc242ec51e803e84.patch @@ -0,0 +1,36 @@ +Upstream: Yes +From 1d01b52d761227c9675b2785cc242ec51e803e84 Mon Sep 17 00:00:00 2001 +From: Dylan Baker <dylan@pnwbakers.com> +Date: Tue, 24 Apr 2018 14:15:47 -0700 +Subject: meson: Fix no-rtti in llvm detection +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Because I clearly wasn't thinking and clearly didn't do a good job +testing. Sigh + +Fixes: c5a97d658ec19cc02719d7f86c1b0715e3d9ffc4 +       ("meson: fix builds against LLVM built without rtti") +Signed-off-by: Dylan Baker <dylan.c.baker@intel.com> +Reviewed-by: Marek Olšák <marek.olsak@amd.com> +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 590ac40..52a1075 100644 +--- a/meson.build ++++ b/meson.build +@@ -1149,7 +1149,7 @@ if with_llvm +   # programs, so we need to build all C++ code in mesa without rtti as well to +   # ensure that linking works. +   if dep_llvm.get_configtool_variable('has-rtti') == 'NO' +-    cpp_args('-fno-rtti') ++    cpp_args += '-fno-rtti' +   endif + elif with_amd_vk or with_gallium_radeonsi or with_gallium_swr +   error('The following drivers require LLVM: Radv, RadeonSI, SWR. One of these is enabled, but LLVM is disabled.') +--  +cgit v1.1 + diff --git a/packages/x11-dri/mesa/files/3c288da5eec81ee58b85927df18d9194ead8f5c2.patch b/packages/x11-dri/mesa/files/3c288da5eec81ee58b85927df18d9194ead8f5c2.patch new file mode 100644 index 0000000..4850c97 --- /dev/null +++ b/packages/x11-dri/mesa/files/3c288da5eec81ee58b85927df18d9194ead8f5c2.patch @@ -0,0 +1,27 @@ +Upstream: yes + +From 3c288da5eec81ee58b85927df18d9194ead8f5c2 Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@intel.com> +Date: Tue, 12 Jun 2018 11:59:01 +0100 +Subject: [PATCH] drivers/dri/i965: add missing #include + +brw_bufmgr.h uses time_t without include time.h, so the build fails under musl. + +Reviewed-by: Eric Engestrom <eric.engestrom@intel.com> +--- + src/mesa/drivers/dri/i965/brw_bufmgr.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/mesa/drivers/dri/i965/brw_bufmgr.h b/src/mesa/drivers/dri/i965/brw_bufmgr.h +index 8cdf944e3da..32fc7a553c9 100644 +--- a/src/mesa/drivers/dri/i965/brw_bufmgr.h ++++ b/src/mesa/drivers/dri/i965/brw_bufmgr.h +@@ -37,6 +37,8 @@ + #include <stdbool.h> + #include <stdint.h> + #include <stdio.h> ++#include <time.h> ++ + #include "util/u_atomic.h" + #include "util/list.h" +  diff --git a/packages/x11-dri/mesa/files/c5a97d658ec19cc02719d7f86c1b0715e3d9ffc4.patch b/packages/x11-dri/mesa/files/c5a97d658ec19cc02719d7f86c1b0715e3d9ffc4.patch new file mode 100644 index 0000000..18f7b00 --- /dev/null +++ b/packages/x11-dri/mesa/files/c5a97d658ec19cc02719d7f86c1b0715e3d9ffc4.patch @@ -0,0 +1,39 @@ +Upstream: Yes +From c5a97d658ec19cc02719d7f86c1b0715e3d9ffc4 Mon Sep 17 00:00:00 2001 +From: Dylan Baker <dylan@pnwbakers.com> +Date: Mon, 16 Apr 2018 14:47:58 -0700 +Subject: meson: fix builds against LLVM built without rtti + +Building without rtti is a frought with peril, but it's something that +autotools supports so we need to support it too. + +Since we've moved to version 0.44 as a whole we can use the meson +functionality for accessing random llvm-config options we can check for +rtti and add -fno-rtti to all C++ code accordingly. + +Signed-off-by: Dylan Baker <dylan.c.baker@intel.com> +--- + meson.build | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/meson.build b/meson.build +index 2e10ed7..4019b21 100644 +--- a/meson.build ++++ b/meson.build +@@ -1143,6 +1143,13 @@ if with_llvm +     '-DHAVE_LLVM=0x0@0@0@1@'.format(_llvm_version[0], _llvm_version[1]), +     '-DMESA_LLVM_VERSION_PATCH=@0@'.format(_llvm_patch), +   ] ++ ++  # LLVM can be built without rtti, turning off rtti changes the ABI of C++ ++  # programs, so we need to build all C++ code in mesa without rtti as well to ++  # ensure that linking works. ++  if dep_llvm.get_configtool_variable('has-rtti') == 'NO' ++    cpp_args('-fno-rtti') ++  endif + elif with_amd_vk or with_gallium_radeonsi or with_gallium_swr +   error('The following drivers require LLVM: Radv, RadeonSI, SWR. One of these is enabled, but LLVM is disabled.') + endif +--  +cgit v1.1 + diff --git a/packages/x11-dri/mesa/files/fix-build-without-dri.patch b/packages/x11-dri/mesa/files/fix-build-without-dri.patch new file mode 100644 index 0000000..d6ab841 --- /dev/null +++ b/packages/x11-dri/mesa/files/fix-build-without-dri.patch @@ -0,0 +1,29 @@ +Author: Rasmus Thomsen <cogitri@exherbo.org> +Reason: Fix build without dri +Upstream: No, not yet +diff --git a/src/gallium/auxiliary/pipe-loader/meson.build b/src/gallium/auxiliary/pipe-loader/meson.build +index 32e8188..31b3e7e 100644 +--- a/src/gallium/auxiliary/pipe-loader/meson.build ++++ b/src/gallium/auxiliary/pipe-loader/meson.build +@@ -35,6 +35,12 @@ if with_gallium_drisw_kms +   libpipe_loader_defines += '-DHAVE_PIPE_LOADER_KMS' + endif +  ++if with_dri == true ++  dri_args = '-DHAVE_PIPE_LOADER_DRI=1' ++else ++  dri_args = [ ] ++endif ++ + libpipe_loader_static = static_library( +   'pipe_loader_static', +   [files_pipe_loader, xmlpool_options_h], +@@ -43,7 +49,7 @@ libpipe_loader_static = static_library( +     inc_gallium_winsys, +   ], +   c_args : [ +-    c_vis_args, '-DHAVE_PIPE_LOADER_DRI', '-DGALLIUM_STATIC_TARGETS=1', ++    c_vis_args, dri_args , '-DGALLIUM_STATIC_TARGETS=1', +     libpipe_loader_defines, +   ], +   link_with : [libloader, libxmlconfig], diff --git a/packages/x11-dri/mesa/files/mesa-11.1-musl.patch b/packages/x11-dri/mesa/files/mesa-11.1-musl.patch new file mode 100644 index 0000000..596f6eb --- /dev/null +++ b/packages/x11-dri/mesa/files/mesa-11.1-musl.patch @@ -0,0 +1,27 @@ +Upstream: https://bugs.freedesktop.org/show_bug.cgi?id=93059 +From 09d5b4c04356c7bd56089605aed7742be89644c1 Mon Sep 17 00:00:00 2001 +From: Kylie McClain <somasis@exherbo.org> +Date: Sat, 21 Nov 2015 16:39:20 -0500 +Subject: [PATCH] i965: don't underlink i965_dri.so, causes miserable failure + on musl libc + +--- + src/mesa/drivers/dri/i965/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/mesa/drivers/dri/i965/Makefile.am b/src/mesa/drivers/dri/i965/Makefile.am +index 9d003e4..8797431 100644 +--- a/src/mesa/drivers/dri/i965/Makefile.am ++++ b/src/mesa/drivers/dri/i965/Makefile.am +@@ -44,7 +44,7 @@ AM_CXXFLAGS = $(AM_CFLAGS) +  + noinst_LTLIBRARIES = libi965_dri.la libi965_compiler.la + libi965_dri_la_SOURCES = $(i965_FILES) +-libi965_dri_la_LIBADD = libi965_compiler.la $(INTEL_LIBS) ++libi965_dri_la_LIBADD = libi965_compiler.la $(INTEL_LIBS) $(top_builddir)/src/mapi/shared-glapi/libglapi.la +  + libi965_compiler_la_SOURCES = $(i965_compiler_FILES) +  +--  +2.6.3 + diff --git a/packages/x11-dri/mesa/files/mesa-12.0-musl.patch b/packages/x11-dri/mesa/files/mesa-12.0-musl.patch new file mode 100644 index 0000000..1893d87 --- /dev/null +++ b/packages/x11-dri/mesa/files/mesa-12.0-musl.patch @@ -0,0 +1,28 @@ +Upstream: https://bugs.freedesktop.org/show_bug.cgi?id=93059 +From 553b874eefbdafb0b1f509cd39f861f5c3b98efe Mon Sep 17 00:00:00 2001 +From: Kylie McClain <somasis@exherbo.org> +Date: Sat, 21 Nov 2015 16:39:20 -0500 +Subject: [PATCH] i965: don't underlink i965_dri.so, causes miserable failure + on musl libc + +--- + src/mesa/drivers/dri/i965/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/mesa/drivers/dri/i965/Makefile.am b/src/mesa/drivers/dri/i965/Makefile.am +index 0a5222e..0a88ec5 100644 +--- a/src/mesa/drivers/dri/i965/Makefile.am ++++ b/src/mesa/drivers/dri/i965/Makefile.am +@@ -52,7 +52,8 @@ libi965_dri_la_SOURCES = $(i965_FILES) + libi965_dri_la_LIBADD = \ + 	$(top_builddir)/src/intel/isl/libisl.la \ + 	libi965_compiler.la \ +-	$(INTEL_LIBS) ++	$(INTEL_LIBS) \ ++	$(top_builddir)/src/mapi/shared-glapi/libglapi.la +  + libi965_compiler_la_SOURCES = \ + 	$(i965_compiler_FILES) \ +--  +2.8.3 + diff --git a/packages/x11-dri/mesa/files/mesa-13.0-musl.patch b/packages/x11-dri/mesa/files/mesa-13.0-musl.patch new file mode 100644 index 0000000..5b898cd --- /dev/null +++ b/packages/x11-dri/mesa/files/mesa-13.0-musl.patch @@ -0,0 +1,28 @@ +Upstream: https://bugs.freedesktop.org/show_bug.cgi?id=93059 +From 8c30dacc9d7f1e47f2519ab0e998a5e33f3cf75a Mon Sep 17 00:00:00 2001 +From: Kylie McClain <somasis@exherbo.org> +Date: Sat, 21 Nov 2015 16:39:20 -0500 +Subject: [PATCH] i965: don't underlink i965_dri.so, causes miserable failure + on musl libc + +--- + src/mesa/drivers/dri/i965/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/mesa/drivers/dri/i965/Makefile.am b/src/mesa/drivers/dri/i965/Makefile.am +index a192fc0..dd3c7b1 100644 +--- a/src/mesa/drivers/dri/i965/Makefile.am ++++ b/src/mesa/drivers/dri/i965/Makefile.am +@@ -83,7 +83,8 @@ libi965_dri_la_LIBADD = \ + 	libi965_compiler.la \ + 	$(top_builddir)/src/intel/blorp/libblorp.la \ + 	$(I965_PERGEN_LIBS) \ +-	$(INTEL_LIBS) ++	$(INTEL_LIBS) \ ++	$(top_builddir)/src/mapi/shared-glapi/libglapi.la +  + libi965_compiler_la_SOURCES = \ + 	$(i965_compiler_FILES) \ +--  +2.10.2 + diff --git a/packages/x11-dri/mesa/files/mesa-17.1.1-musl.patch b/packages/x11-dri/mesa/files/mesa-17.1.1-musl.patch new file mode 100644 index 0000000..50c2d8b --- /dev/null +++ b/packages/x11-dri/mesa/files/mesa-17.1.1-musl.patch @@ -0,0 +1,20 @@ +Upstream: https://bugs.freedesktop.org/show_bug.cgi?id=93059 +From 8c30dacc9d7f1e47f2519ab0e998a5e33f3cf75a Mon Sep 17 00:00:00 2001 +From: Kylie McClain <somasis@exherbo.org> +Date: Sat, 21 Nov 2015 16:39:20 -0500 +Subject: [PATCH] i965: don't underlink i965_dri.so, causes miserable failure + on musl libc + +diff -Naur mesa-17.1.1/src/mesa/drivers/dri/i965/Makefile.am mesa-17.1.1.new/src/mesa/drivers/dri/i965/Makefile.am +--- mesa-17.1.1/src/mesa/drivers/dri/i965/Makefile.am	2017-05-25 09:13:13.000000000 +0200 ++++ mesa-17.1.1.new/src/mesa/drivers/dri/i965/Makefile.am	2017-05-29 18:12:35.469258076 +0200 +@@ -41,7 +41,8 @@ + 	$(DEFINES) \ + 	$(VISIBILITY_CFLAGS) \ + 	$(LIBDRM_CFLAGS) \ +-	$(VALGRIND_CFLAGS) ++	$(VALGRIND_CFLAGS) \ ++	$(top_builddir)/src/mapi/shared-glapi/libglapi.la +  + AM_CXXFLAGS = $(AM_CFLAGS) +  diff --git a/packages/x11-dri/mesa/files/mesa-add-NDEBUG-without-rtti.patch b/packages/x11-dri/mesa/files/mesa-add-NDEBUG-without-rtti.patch new file mode 100644 index 0000000..47403cf --- /dev/null +++ b/packages/x11-dri/mesa/files/mesa-add-NDEBUG-without-rtti.patch @@ -0,0 +1,21 @@ +Author: Rasmus Thomsen <cogitri@exherbo.org> +Reason: Mesa's meson build system doesn't pass +NDEBUG to the cppargs when building with LLVM +without RTTI support enabled. This causes the +build to fail because some parts of debugging +need RTTI support. +Upstream: Created bug for it, https://bugs.freedesktop.org/show_bug.cgi?id=106391 +diff --git a/meson.build b/meson.build +index 6e61766809..269b5bd3b9 100644 +--- a/meson.build ++++ b/meson.build +@@ -1150,6 +1150,9 @@ if with_llvm +   # ensure that linking works. +   if dep_llvm.get_configtool_variable('has-rtti') == 'NO' +     cpp_args += '-fno-rtti' ++    pre_args += [ ++      '-DNDEBUG', ++    ] +   endif + elif with_amd_vk or with_gallium_radeonsi or with_gallium_swr +   error('The following drivers require LLVM: Radv, RadeonSI, SWR. One of these is enabled, but LLVM is disabled.') diff --git a/packages/x11-dri/mesa/files/mesa-configure.ac-Add-with-wayland-scanner-path-17.2.patch b/packages/x11-dri/mesa/files/mesa-configure.ac-Add-with-wayland-scanner-path-17.2.patch new file mode 100644 index 0000000..bce9bf7 --- /dev/null +++ b/packages/x11-dri/mesa/files/mesa-configure.ac-Add-with-wayland-scanner-path-17.2.patch @@ -0,0 +1,40 @@ +Source: See below, slightly modified for 17.2.0 +Upstream: under review, https://patchwork.freedesktop.org/patch/157889/ +Reason: Fix cross compiling + +diff --git a/configure.ac b/configure.ac +index 0bd9650..c5dc8da 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1696,12 +1696,18 @@ if test "x$with_platforms" = xauto; then +     with_platforms=$with_egl_platforms + fi +  +-PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], ++AC_ARG_WITH([wayland-scanner-path], ++    [AS_HELP_STRING([--with-wayland-scanner-path=PATH], ++        [Path to wayland-scanner (by default the path from ++        'pkg-config --variable=wayland_scanner wayland-scanner' is used)])], ++    [WAYLAND_SCANNER="$withval"], ++    [WAYLAND_SCANNER="auto"]) ++if test x$WAYLAND_SCANNER = xauto; then ++    PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], +         WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, +-        WAYLAND_SCANNER='') +-if test "x$WAYLAND_SCANNER" = x; then +-    AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:]) ++        WAYLAND_SCANNER=":") + fi ++AC_SUBST(WAYLAND_SCANNER) +  + PKG_CHECK_EXISTS([wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED], [have_wayland_protocols=yes], [have_wayland_protocols=no]) + if test "x$have_wayland_protocols" = xyes; then +@@ -1718,7 +1724,7 @@ for plat in $platforms; do +         PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED]) +  +         if test "x$WAYLAND_SCANNER" = "x:"; then +-                AC_MSG_ERROR([wayland-scanner is needed to compile the wayland platform]) ++                AC_MSG_ERROR([wayland-scanner is needed by Wayland platform but it could not be found and --with-wayland-scanner-path was not used]) +         fi +         if test "x$have_wayland_protocols" = xno; then +                 AC_MSG_ERROR([wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED is needed to compile the wayland platform]) diff --git a/packages/x11-dri/mesa/files/mesa-configure.ac-Add-with-wayland-scanner-path.patch b/packages/x11-dri/mesa/files/mesa-configure.ac-Add-with-wayland-scanner-path.patch new file mode 100644 index 0000000..a80f11a --- /dev/null +++ b/packages/x11-dri/mesa/files/mesa-configure.ac-Add-with-wayland-scanner-path.patch @@ -0,0 +1,60 @@ +Upstream: under review, https://patchwork.freedesktop.org/patch/157889/ +Reason: Fix cross compiling + +From b9f3b1cd55ef45e196dfa9c4f9469c7a7fa7f91d Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen <jussi.kukkonen@intel.com> +Date: Tue, 23 May 2017 11:13:57 +0300 +Subject: [PATCH] configure.ac: Add --with-wayland-scanner-path + +Modify wayland-scanner lookup: Use the path given by pkg-config +but offer an option to override the path with +"--with-wayland-scanner-path=PATH". The latter is useful for +cross-compile situations. + +AC_PATH_PROG is no longer used (if the scanner is installed it should +get found by pkg-config). AC_SUBST is added so the output variable is +created when only the configure option is used. +--- + configure.ac | 17 ++++++++++++----- + 1 file changed, 12 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index b069f54155..5bd8dc76ab 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1661,12 +1661,19 @@ if test "x$with_platforms" = xauto; then +     with_platforms=$with_egl_platforms + fi +  +-PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], ++ ++AC_ARG_WITH([wayland-scanner-path], ++    [AS_HELP_STRING([--with-wayland-scanner-path=PATH], ++        [Path to wayland-scanner (by default the path from ++        'pkg-config --variable=wayland_scanner wayland-scanner' is used)])], ++    [WAYLAND_SCANNER="$withval"], ++    [WAYLAND_SCANNER="auto"]) ++if test x$WAYLAND_SCANNER = xauto; then ++    PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], +         WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, +-        WAYLAND_SCANNER='') +-if test "x$WAYLAND_SCANNER" = x; then +-    AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:]) ++        WAYLAND_SCANNER=":") + fi ++AC_SUBST(WAYLAND_SCANNER) +  + # Do per platform setups and checks + platforms=`IFS=', '; echo $with_platforms` +@@ -1677,7 +1684,7 @@ for plat in $platforms; do + 		PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED]) +  + 		if test "x$WAYLAND_SCANNER" = "x:"; then +-			AC_MSG_ERROR([wayland-scanner is needed to compile the wayland platform]) ++			AC_MSG_ERROR([wayland-scanner is needed by Wayland platform but it could not be found and --with-wayland-scanner-path was not used]) + 		fi + 		DEFINES="$DEFINES -DHAVE_WAYLAND_PLATFORM" + 		;; +--  +2.13.2 + diff --git a/packages/x11-dri/mesa/mesa-11.2.2-r1.exheres-0 b/packages/x11-dri/mesa/mesa-11.2.2-r1.exheres-0 new file mode 100644 index 0000000..4916199 --- /dev/null +++ b/packages/x11-dri/mesa/mesa-11.2.2-r1.exheres-0 @@ -0,0 +1,12 @@ +# Copyright 2008 Alexander Færøy <eroyf@eroyf.org> +# Copyright 2009, 2011 Ingmar Vanhassel <ingmar@exherbo.org> +# Distributed under the terms of the GNU General Public License v2 + +require mesa + +PLATFORMS="~amd64 ~x86" + +DEFAULT_SRC_PREPARE_PATCHES=( +    "${FILES}"/mesa-11.1-musl.patch +) + diff --git a/packages/x11-dri/mesa/mesa-12.0.6-r2.exheres-0 b/packages/x11-dri/mesa/mesa-12.0.6-r2.exheres-0 new file mode 100644 index 0000000..8467eea --- /dev/null +++ b/packages/x11-dri/mesa/mesa-12.0.6-r2.exheres-0 @@ -0,0 +1,12 @@ +# Copyright 2008 Alexander Færøy <eroyf@eroyf.org> +# Copyright 2009, 2011 Ingmar Vanhassel <ingmar@exherbo.org> +# Distributed under the terms of the GNU General Public License v2 + +require mesa + +PLATFORMS="~amd64 ~x86" + +DEFAULT_SRC_PREPARE_PATCHES=( +    "${FILES}"/mesa-12.0-musl.patch +) + diff --git a/packages/x11-dri/mesa/mesa-13.0.6-r3.exheres-0 b/packages/x11-dri/mesa/mesa-13.0.6-r3.exheres-0 new file mode 100644 index 0000000..82fded6 --- /dev/null +++ b/packages/x11-dri/mesa/mesa-13.0.6-r3.exheres-0 @@ -0,0 +1,13 @@ +# Copyright 2008 Alexander Færøy <eroyf@eroyf.org> +# Copyright 2009, 2011 Ingmar Vanhassel <ingmar@exherbo.org> +# Distributed under the terms of the GNU General Public License v2 + +require mesa + +PLATFORMS="~amd64 ~x86" + +DEFAULT_SRC_PREPARE_PATCHES=( +    "${FILES}"/045f38a50759bb225cb179703bc7050f6de752b1.patch +    "${FILES}"/mesa-13.0-musl.patch +) + diff --git a/packages/x11-dri/mesa/mesa-17.1.9-r2.exheres-0 b/packages/x11-dri/mesa/mesa-17.1.9-r2.exheres-0 new file mode 100644 index 0000000..caa9ead --- /dev/null +++ b/packages/x11-dri/mesa/mesa-17.1.9-r2.exheres-0 @@ -0,0 +1,13 @@ +# Copyright 2008 Alexander Færøy <eroyf@eroyf.org> +# Copyright 2009, 2011 Ingmar Vanhassel <ingmar@exherbo.org> +# Distributed under the terms of the GNU General Public License v2 + +require mesa + +PLATFORMS="~amd64 ~x86" + +DEFAULT_SRC_PREPARE_PATCHES=( +    "${FILES}"/mesa-17.1.1-musl.patch +    "${FILES}"/mesa-configure.ac-Add-with-wayland-scanner-path.patch +) + diff --git a/packages/x11-dri/mesa/mesa-17.2.8-r1.exheres-0 b/packages/x11-dri/mesa/mesa-17.2.8-r1.exheres-0 new file mode 100644 index 0000000..c1b6e6e --- /dev/null +++ b/packages/x11-dri/mesa/mesa-17.2.8-r1.exheres-0 @@ -0,0 +1,12 @@ +# Copyright 2008 Alexander Færøy <eroyf@eroyf.org> +# Copyright 2009, 2011 Ingmar Vanhassel <ingmar@exherbo.org> +# Distributed under the terms of the GNU General Public License v2 + +require mesa + +PLATFORMS="~amd64 ~x86" + +DEFAULT_SRC_PREPARE_PATCHES=( +    "${FILES}"/mesa-configure.ac-Add-with-wayland-scanner-path-17.2.patch +) + diff --git a/packages/x11-dri/mesa/mesa-17.3.9.exheres-0 b/packages/x11-dri/mesa/mesa-17.3.9.exheres-0 new file mode 100644 index 0000000..2d4389e --- /dev/null +++ b/packages/x11-dri/mesa/mesa-17.3.9.exheres-0 @@ -0,0 +1,12 @@ +# Copyright 2008 Alexander Færøy <eroyf@eroyf.org> +# Copyright 2009, 2011 Ingmar Vanhassel <ingmar@exherbo.org> +# Distributed under the terms of the GNU General Public License v2 + +require mesa + +PLATFORMS="~amd64 ~armv7 ~armv8 ~x86" + +DEFAULT_SRC_PREPARE_PATCHES=( +    "${FILES}"/mesa-configure.ac-Add-with-wayland-scanner-path-17.2.patch +) + diff --git a/packages/x11-dri/mesa/mesa-18.0.5.exheres-0 b/packages/x11-dri/mesa/mesa-18.0.5.exheres-0 new file mode 100644 index 0000000..00d12ff --- /dev/null +++ b/packages/x11-dri/mesa/mesa-18.0.5.exheres-0 @@ -0,0 +1,17 @@ +# Copyright 2008 Alexander Færøy <eroyf@eroyf.org> +# Copyright 2009, 2011 Ingmar Vanhassel <ingmar@exherbo.org> +# Copyright 2018 Rasmus Thomsen <cogitri@exherbo.org> +# Distributed under the terms of the GNU General Public License v2 + +require mesa-meson + +PLATFORMS="~amd64 ~armv7 ~x86" + +DEFAULT_SRC_PREPARE_PATCHES=( +    "${FILES}"/0001-build-fix-building-vdpau-va.patch +    "${FILES}"/fix-build-without-dri.patch +    "${FILES}"/c5a97d658ec19cc02719d7f86c1b0715e3d9ffc4.patch +    "${FILES}"/1d01b52d761227c9675b2785cc242ec51e803e84.patch +    "${FILES}"/mesa-add-NDEBUG-without-rtti.patch +) + diff --git a/packages/x11-dri/mesa/mesa-18.1.2.exheres-0 b/packages/x11-dri/mesa/mesa-18.1.2.exheres-0 new file mode 100644 index 0000000..f870e35 --- /dev/null +++ b/packages/x11-dri/mesa/mesa-18.1.2.exheres-0 @@ -0,0 +1,18 @@ +# Copyright 2008 Alexander Færøy <eroyf@eroyf.org> +# Copyright 2009, 2011 Ingmar Vanhassel <ingmar@exherbo.org> +# Copyright 2018 Rasmus Thomsen <cogitri@exherbo.org> +# Distributed under the terms of the GNU General Public License v2 + +require mesa-meson + +PLATFORMS="~amd64 ~armv7 ~x86" + +DEFAULT_SRC_PREPARE_PATCHES=( +    "${FILES}"/0001-build-fix-building-vdpau-va.patch +    "${FILES}"/fix-build-without-dri.patch +    "${FILES}"/c5a97d658ec19cc02719d7f86c1b0715e3d9ffc4.patch +    "${FILES}"/1d01b52d761227c9675b2785cc242ec51e803e84.patch +    "${FILES}"/mesa-add-NDEBUG-without-rtti.patch +    "${FILES}"/3c288da5eec81ee58b85927df18d9194ead8f5c2.patch +) + diff --git a/packages/x11-dri/mesa/mesa-meson.exlib b/packages/x11-dri/mesa/mesa-meson.exlib new file mode 100644 index 0000000..e94774b --- /dev/null +++ b/packages/x11-dri/mesa/mesa-meson.exlib @@ -0,0 +1,346 @@ +# Copyright 2018 Rasmus Thomsen <cogitri@exherbo.org> +# Based in part upon 'mesa.exlib' which is: +# Copyright 2008 Alexander Færøy <eroyf@eroyf.org> +# Copyright 2008-2011 Ingmar Vanhassel <ingmar@exherbo.org> +# Copyright 2013 Saleem Abdulrasool <compnerd@compnerd.org> + +if ever is_scm ; then +    SCM_REPOSITORY="https://anongit.freedesktop.org/git/${PN}/${PN}.git" +    require scm-git +else +    MY_PV=${PV%%-rc*} +    DOWNLOADS=" +        https://mesa.freedesktop.org/archive/${MY_PV}/${PNV}.tar.xz +        https://mesa.freedesktop.org/archive/${PNV}.tar.xz +    " +    UPSTREAM_RELEASE_NOTES="https://www.mesa3d.org/relnotes/${PV}.html" +fi + +require alternatives meson [ meson_minimum_version=0.42 ] + +export_exlib_phases src_prepare src_configure src_install + +SUMMARY="Mesa's OpenGL library" +HOMEPAGE="https://www.mesa3d.org" + +LICENCES="MIT" +SLOT="0" +MYOPTIONS=" +    d3d9 [[ description = [ Gallium Direct3D 9.x state tracker ] requires = [ llvm X ] ]] +    d3d9? ( +        video_drivers: +            ( +                i915 +                intel +                nouveau +                r300 +                radeon +                vmware +            ) [[ number-selected = at-least-one ]] +    ) +    gl-vendor [[ +        description = [ Install a glvnd (gl vendor) file to allow for parallel install of multiple GL implementations ] +    ]] +    llvm [[ description = [ Using LLVM as the shader backend for Gallium ] ]] +    opencl [[ description = [ Enable the OpenCL Gallium state tracker ] requires = [ llvm ] ]] +    sensors [[ description = [ Gallium extra HUD and sensors support ] ]] +    sensors? ( ( video_drivers: nouveau radeon ) [[ number-selected = at-least-one ]] ) +    texture-float [[ description = [ Enable floating-point textures and renderbuffers. SGI claims to hold patents on this code. ] ]] +    va [[ description = [ Enable the VA-API state tracker ] ]] +    va? ( +        ( X wayland ) [[ number-selected = at-least-one ]] +        video_drivers: +            ( +                nouveau +                radeon +            ) [[ number-selected = at-least-one ]] +    ) +    vdpau [[ description = [ Enable support for VDPAU hardware accelerated video decoding ] requires = [ X ] ]] +    wayland +    X [[ description = [ Enable GLX ] presumed = true ]] +    xa [[ description = [ Enable the X Acceleration API (xatracker) ] ]] +    xvmc [[ description = [ Enable support for XvMC hardware accelerated video decoding ] ]] +    ( +        platform: +            amd64 +            x86 +        video_drivers: +            ( +                i915 [[ description = [ Gallium driver for i915 based Intel GPUs ] ]] +                intel [[ description = [ Driver for i915, i965 and newer ] ]] +            ) [[ number-selected = at-most-one ]] +            gallium-swrast [[ +                description = [ Gallium based software driver ] +                requires = [ llvm ] +            ]] +            ( +                nouveau [[ description = [ (Gallium) Generally for newer Nvidia cards ] ]] +                nouveau-legacy [[ description = [ Generally for older Nvidia cards ] ]] +            ) [[ number-selected = at-most-one ]] +            ( +                r300 [[ description = [ (Gallium) Driver for Radeon cards from 9500 (r300) to X1950 (r500) ] ]] +                radeon [[ description = [ (Gallium) Driver for the Radeon HD-2000 (r600) and newer ] ]] +            ) [[ requires = [ llvm video_drivers: gallium-swrast ] ]] +            radeon-legacy [[ description = [ Classic driver for cards older than the Radeon 9500 (r300) ] ]] +            virtio-gpu [[ description = [ Gallium driver for guest systems on hypervisors with VirtIO-GPU ] ]] +            vmware [[ description = [ Gallium driver for VMware's SVGA virtual GPU ] ]] +    ) +    ( +        platform: +            armv7 +        video_drivers: +            ( +                vc4 [[ description = [ Gallium driver for Raspberry Pi Videocore graphics ] ]] +            ) +    ) +    llvm? ( +        ( video_drivers: gallium-swrast i915 nouveau r300 radeon ) [[ number-selected = at-least-one ]] +    ) +    opencl? ( +        ( video_drivers: nouveau radeon ) [[ number-selected = at-least-one ]] +    ) +    valgrind [[ description = [ Support valgrind intrinsics to suppress false warnings ] ]] +    vdpau? ( ( video_drivers: nouveau radeon ) [[ number-selected = at-least-one ]] ) +    xa? ( ( video_drivers: i915 nouveau vmware ) [[ number-selected = at-least-one ]] ) +    xvmc? ( ( video_drivers: nouveau radeon ) [[ number-selected = at-least-one ]] ) +" + +# NOTE(Cogitri): The below version is needed to build mesa at all +LIBDRM_REQUIRED='[>=2.4.75]' +# The below version is needed to build amdvk or radeonsi +LIBDRM_REQUIRED_AMDGPU='[>=2.4.91]' +# The below version is needed to build any of the other radeon drivers +LIBDRM_REQUIRED_RADEON='[>=2.4.71]' +# The below version is needed to build dri or gallium nouveau +LIBDRM_REQUIRED_NOUVEAU='[>=2.4.66]' +# The below version is needed to build dri or gallium i915 +LIBDRM_REQUIRED_INTEL='[>=2.4.75]' +# NOTE(Cogitri): for xcb-glx +XCBDRI2_REQUIRED='[>=1.8.1]' + +# TODO state trackers: OpenMAX(omx), requires additional new dependency libomxil-bellagio +DEPENDENCIES=" +    build: +        dev-lang/python:2.7 +        dev-libs/libpthread-stubs[>=0.4] +        dev-python/Mako[>=0.8.0][python_abis:2.7] +        sys-devel/bison +        sys-devel/flex +        virtual/pkg-config[>=0.9.0] +        !x11-dri/eclectic-opengl +        gl-vendor? ( dev-libs/libglvnd[>=0.2.0] ) +        opencl? ( dev-lang/clang[>=3.9] ) +        X? ( x11-proto/xorgproto ) +    build+run: +        dev-libs/expat +        sys-libs/zlib[>=1.2.3] +        x11-dri/libdrm${LIBDRM_REQUIRED} +        llvm? ( dev-lang/llvm[>=3.9.0][-static(-)] [[ +                note = [ meson build system doesn't support static llvm ] +            ]] +        ) +        sensors? ( +            sys-apps/lm_sensors[>=3.4.0] +        ) +        opencl? ( +            dev-lang/llvm[>=3.9.0][-static(-)] +            dev-libs/libclc +        ) +        va? ( +            x11-libs/libX11 +            x11-libs/libva[>=1.6.0] +            x11-libs/libxcb${XCBDRI2_REQUIRED} +        ) +        valgrind? ( dev-util/valgrind ) +        vdpau? ( +            x11-libs/libX11 +            x11-libs/libvdpau[>=1.1] +            x11-libs/libxcb${XCBDRI2_REQUIRED} +        ) +        video_drivers:i915? ( x11-dri/libdrm${LIBDRM_REQUIRED_INTEL}[video_drivers:intel(+)] ) +        video_drivers:intel? ( x11-dri/libdrm${LIBDRM_REQUIRED_INTEL}[video_drivers:intel(+)] ) +        video_drivers:nouveau? ( x11-dri/libdrm${LIBDRM_REQUIRED_NOUVEAU}[video_drivers:nouveau(-)] ) +        video_drivers:nouveau-legacy? ( x11-dri/libdrm${LIBDRM_REQUIRED_NOUVEAU}[video_drivers:nouveau(-)] ) +        video_drivers:r300? ( x11-dri/libdrm${LIBDRM_REQUIRED_RADEON}[video_drivers:radeon(-)] ) +        video_drivers:radeon? ( +            dev-lang/llvm[>=4.0.0][-static(-)] +            dev-util/elfutils +            x11-dri/libdrm${LIBDRM_REQUIRED_AMDGPU}[video_drivers:radeon(-)] +        ) +        video_drivers:radeon-legacy? ( x11-dri/libdrm${LIBDRM_REQUIRED_RADEON}[video_drivers:radeon(-)] ) +        video_drivers:vc4? ( x11-dri/libdrm[video_drivers:vc4(-)] ) +        video_drivers:vmware? ( x11-dri/libdrm[video_drivers:vmware(-)] ) +        wayland? ( +            sys-libs/wayland[>=1.11] +            sys-libs/wayland-protocols[>=1.8.0] +        ) +        X? ( +            x11-libs/libICE +            x11-libs/libX11[xcb(+)] +            x11-libs/libXau +            x11-libs/libxcb +            x11-libs/libXdamage[>=1.1] +            x11-libs/libXdmcp +            x11-libs/libXext +            x11-libs/libXfixes +            x11-libs/libxshmfence[>=1.1] +            x11-libs/libXxf86vm +        ) +        xvmc? ( +            x11-libs/libX11 +            x11-libs/libXvMC[>=1.0.6] +            x11-libs/libxcb${XCBDRI2_REQUIRED} +        ) +        !sys-libs/wayland[<1.15.0] [[ +            description = [ wayland imported libwayland-egl from mesa ] +            resolution = uninstall-blocked-after +        ]] +    run: +        opencl? ( +            dev-libs/ocl-icd +        ) +        !media-libs/libtxc_dxtn [[ +                description = [ mesa now bundles libtxc_dxtn ] +                resolution = uninstall-blocked-after +        ]] +    suggestion: +        x11-dri/mesa-demos [[ +            description = [ Provides useful programs like glxinfo ] +        ]] +" + +mesa-meson_src_prepare() { +    # Meson's meson build system requires pkg-config to do some +    # fancy, custom stuff, which use pkg-config directly. +    edo mkdir "${WORKBASE}"/bin +    edo ln -s "/usr/$(exhost --build)/bin/${PKG_CONFIG}" "${WORKBASE}"/bin/pkg-config +    export PATH="${WORKBASE}/bin:${PATH}" + +    meson_src_prepare +} + +mesa-meson_src_configure() { +    DRI_DRIVERS=( ) +    EGL_PLATFORMS=( ) +    GALLIUM_DRIVERS=( ) +    VULKAN_DRIVERS=( ) + +    option !video_drivers:gallium-swrast    && DRI_DRIVERS+=( swrast ) +    option video_drivers:intel              && DRI_DRIVERS+=( i915 i965 ) +    option video_drivers:nouveau-legacy     && DRI_DRIVERS+=( nouveau ) +    option video_drivers:radeon-legacy      && DRI_DRIVERS+=( r100 r200 ) + +    # TODO: pl111,freedeno,softpipe,vc4,etnaviv,imx,svga,swr +    option video_drivers:gallium-swrast     && GALLIUM_DRIVERS+=( swrast ) +    option video_drivers:i915               && GALLIUM_DRIVERS+=( i915 ) +    option video_drivers:nouveau            && GALLIUM_DRIVERS+=( nouveau ) +    option video_drivers:r300               && GALLIUM_DRIVERS+=( r300 ) +    option video_drivers:radeon             && GALLIUM_DRIVERS+=( r600 radeonsi ) +    option video_drivers:vc4                && GALLIUM_DRIVERS+=( vc4 ) +    option video_drivers:virtio-gpu         && GALLIUM_DRIVERS+=( virgl ) +    option video_drivers:vmware             && GALLIUM_DRIVERS+=( svga ) + +    option X                                && EGL_PLATFORMS+=( x11 ) +    option wayland                          && EGL_PLATFORMS+=( wayland ) +                                               EGL_PLATFORMS+=( drm surfaceless ) + +    option video_drivers:intel              && VULKAN_DRIVERS+=( intel ) +    option video_drivers:radeon             && VULKAN_DRIVERS+=( amd ) + +    local MESA_SRC_CONFIGURE_PARAMS + +    MESA_SRC_CONFIGURE_PARAMS+=( +        -Dasm=true +        -Ddri-drivers="$(IFS=, ; echo "${DRI_DRIVERS[*]}")" +        -Degl=true +        -Dgallium-drivers=$(IFS=, ; echo "${GALLIUM_DRIVERS[*]}") +        -Dgles1=true +        -Dgles2=true +        -Dlibunwind=false +        -Dopengl=true +        -Dshared-glapi=true +        -Dplatforms=$(IFS=, ; echo "${EGL_PLATFORMS[*]}") +        -Dshader-cache=true +        -Dvulkan-drivers=$(IFS=, ; echo "${VULKAN_DRIVERS[*]}") + +        # OSMesa needs either gallium_softpipe (GALLIUM_DRIVERS=swrast) or dri swrast +        # (DRI_DRIVERS=SWRAST) to be enabled. +        $(meson_switch video_drivers:gallium-swrast osmesa gallium classic) + +        $(meson_switch d3d9 gallium-nine) +        $(meson_switch gl-vendor glvnd) +        $(meson_switch llvm) +        $(meson_switch opencl gallium-opencl icd disabled) +        $(meson_switch sensors lmsensors) +        $(meson_switch sensors gallium-extra-hud) +        $(meson_switch texture-float) +        $(meson_switch va gallium-va) +        $(meson_switch valgrind) +        $(meson_switch vdpau gallium-vdpau) +        $(meson_switch X dri3) +        $(meson_switch X glx dri disabled) +        $(meson_switch xa gallium-xa) +        $(meson_switch xvmc gallium-xvmc) +    ) + +    # Missing dependency +    if ever at_least 18.1; then +        MESA_SRC_CONFIGURE_PARAMS+=( +            -Dgallium-omx=disabled +        ) +    else +        MESA_SRC_CONFIGURE_PARAMS+=( +            -Dgallium-omx=false +        ) +    fi + +    exmeson "${MESA_SRC_CONFIGURE_PARAMS[@]}" "${MESON_SOURCE}" +} + +mesa-meson_src_install() { +    dodir /usr + +    local host=$(exhost --target) +    local X_alternatives=() + +    meson_src_install + +    # alternatives +    local libs=(libEGL libGLESv1_CM libGLESv2) +    option X && libs+=(libGL) + +    edo mkdir "${IMAGE}"/usr/${host}/lib/opengl/ + +    local lib path_old path_new soname +    for lib in "${libs[@]}"; do +        path_new=/usr/${host}/lib/opengl/${lib}-xorg.so +        path_old=$(readlink -f "${IMAGE}"/usr/${host}/lib/${lib}.so) + +        edo mv \ +            "${path_old}" \ +            "${IMAGE}"/${path_new} + +        local objdump=$(exhost --tool-prefix)objdump +        soname=$(edo ${objdump} -p "${IMAGE}"/${path_new} | sed -n 's/^ *SONAME *//p') + +        # clean up the leftover symlinks +        edo rm "${IMAGE}"/usr/${host}/lib/{${lib}.so,${soname}} + +        X_alternatives+=( +            /usr/${host}/lib/${lib}.so ${path_new} +            /usr/${host}/lib/${soname} ${path_new} +        ) +    done + +    if option wayland ; then +        # wayland[>=1.15] imported libwayland-egl in order to allow multiple +        # drivers using it. +        edo rm "${IMAGE}"/usr/$(exhost --target)/lib/pkgconfig/wayland-egl.pc \ +               "${IMAGE}"/usr/$(exhost --target)/lib/libwayland-egl.so* +    fi + +    alternatives_for opengl X.org 10 ${X_alternatives[@]} + +    edo rm -rf "${IMAGE}"/usr/${host}/include/GL/{glew,glxew,wglew}.h +} + diff --git a/packages/x11-dri/mesa/mesa-scm.exheres-0 b/packages/x11-dri/mesa/mesa-scm.exheres-0 new file mode 100644 index 0000000..a9e8833 --- /dev/null +++ b/packages/x11-dri/mesa/mesa-scm.exheres-0 @@ -0,0 +1,15 @@ +# Copyright 2008 Alexander Færøy <eroyf@eroyf.org> +# Copyright 2009, 2010 Ingmar Vanhassel <ingmar@exherbo.org> +# Distributed under the terms of the GNU General Public License v2 + +require mesa + +PLATFORMS="~amd64 ~armv7 ~x86" + +src_install() { +    mesa_src_install + +    # scm doesn't care about --disable-glut there :( +    edo rm -f "${IMAGE}/usr/include/GL/glut.h" +} + diff --git a/packages/x11-dri/mesa/mesa.exlib b/packages/x11-dri/mesa/mesa.exlib new file mode 100644 index 0000000..c124ed2 --- /dev/null +++ b/packages/x11-dri/mesa/mesa.exlib @@ -0,0 +1,512 @@ +# Copyright 2008 Alexander Færøy <eroyf@eroyf.org> +# Copyright 2008-2011 Ingmar Vanhassel <ingmar@exherbo.org> +# Copyright 2013 Saleem Abdulrasool <compnerd@compnerd.org> +# Distributed under the terms of the GNU General Public License v2 +# Based in part upon 'mesa-7.0.3.ebuild' which is: +#    Copyright 1999-2008 Gentoo Foundation + +if ever is_scm ; then +    SCM_REPOSITORY="https://anongit.freedesktop.org/git/${PN}/${PN}.git" +    require scm-git +else +    MY_PV=${PV%%-rc*} +    DOWNLOADS=" +        https://mesa.freedesktop.org/archive/${MY_PV}/${PNV}.tar.xz +        https://mesa.freedesktop.org/archive/${PNV}.tar.xz +    " +    UPSTREAM_RELEASE_NOTES="https://www.mesa3d.org/relnotes/${PV}.html" +fi + +require alternatives toolchain-funcs +require flag-o-matic +require autotools [ supported_autoconf=[ 2.5 ] supported_automake=[ 1.16 1.15 ] ] + +export_exlib_phases src_configure src_install pkg_postinst + +OPENGL_DIR="xorg-x11" + +SUMMARY="Mesa's OpenGL library" +HOMEPAGE="https://www.mesa3d.org" + +# Licences for parts we don't install: +# GLUT: Mark Kilgard's copyright +LICENCES="MIT" +SLOT="0" +MYOPTIONS=" +    llvm [[ description = [ Using LLVM as the shader backend for Gallium ] ]] +    llvm-static [[ description = [ Link to LLVM statically ] requires = [ llvm ] ]] +    opencl [[ description = [ Enable the OpenCL Gallium state tracker ] requires = [ llvm ] ]] +    texture-float [[ description = [ Enable floating-point textures and renderbuffers. SGI claims to hold patents on this code. ] ]] +    va [[ description = [ Enable the VA-API state tracker ] ]] +    wayland +    X [[ description = [ Enable GLX ] presumed = true ]] +    xa [[ description = [ Enable the X Acceleration API (xatracker) ] ]] +    xvmc [[ description = [ Enable support for XvMC hardware accelerated video decoding ] ]] +    ( +        platform: +            amd64 +            x86 +        video_drivers: +            ( +                i915 [[ description = [ Gallium driver for i915 based Intel GPUs ] ]] +                intel [[ description = [ Driver for i915, i965 and newer ] ]] +            ) [[ number-selected = at-most-one ]] +            gallium-swrast [[ description = [ Gallium based software driver ] ]] +            ( +                nouveau [[ description = [ (Gallium) Generally for newer Nvidia cards ] ]] +                nouveau-legacy [[ description = [ Generally for older Nvidia cards ] ]] +            ) [[ number-selected = at-most-one ]] +            ( +                r300 [[ description = [ (Gallium) Driver for Radeon cards from 9500 (r300) to X1950 (r500) ] ]] +                radeon [[ description = [ (Gallium) Driver for the Radeon HD-2000 (r600) and newer ] ]] +            ) [[ requires = [ llvm video_drivers: gallium-swrast ] ]] +            radeon-legacy [[ description = [ Classic driver for cards older than the Radeon 9500 (r300) ] ]] +            virtio-gpu [[ description = [ Gallium driver for guest systems on hypervisors with VirtIO-GPU ] ]] +            vmware [[ description = [ Gallium driver for VMware's SVGA virtual GPU ] ]] +    ) +    ( +        platform: +            armv7 +        video_drivers: +            ( +                vc4 [[ description = [ Gallium driver for Raspberry Pi Videocore graphics ] ]] +            ) +    ) +    llvm? ( +        ( video_drivers: gallium-swrast i915 nouveau r300 radeon ) [[ number-selected = at-least-one ]] +    ) +    opencl? ( +        ( video_drivers: nouveau radeon ) [[ number-selected = at-least-one ]] +    ) +    vdpau? ( ( video_drivers: nouveau radeon ) [[ number-selected = at-least-one ]] ) +    xa? ( ( video_drivers: i915 nouveau vmware radeon ) [[ number-selected = at-least-one ]] ) +    xvmc? ( ( video_drivers: nouveau radeon ) [[ number-selected = at-least-one ]] ) +" + +if ever at_least 17.1.3; then +    MYOPTIONS+=" +        vdpau [[ description = [ Enable support for VDPAU hardware accelerated video decoding ] requires = [ X ] ]] +        va? ( +            ( X wayland ) [[ number-selected = at-least-one ]] +        ) +    " +else +    MYOPTIONS+=" +        vdpau [[ description = [ Enable support for VDPAU hardware accelerated video decoding ] ]] +    " +fi + +if ever at_least 13.0.0; then +    MYOPTIONS+=" +        sensors [[ description = [ Gallium extra HUD and sensors support ] ]] +        sensors? ( ( video_drivers: nouveau radeon ) [[ number-selected = at-least-one ]] ) +    " +else +    MYOPTIONS+=" +        ( providers: eudev systemd ) [[ number-selected = exactly-one ]] +    " +fi + +if ever at_least 12.0.0-rc1; then +    MYOPTIONS+=" +        gl-vendor [[ +            description = [ Install a glvnd (gl vendor) file to allow for parallel install of multiple GL implementations ] +        ]] +        valgrind [[ description = [ Support valgrind intrinsics to suppress false warnings ] ]] +    " +fi + +if ! ever at_least 17.1.3; then +    MYOPTIONS+=" +        ( providers: gcrypt libressl nettle openssl ) [[ number-selected = exactly-one ]] +    " +fi + +# these high versions are not required for every package but as long as we don't need to deal with different versions use the latest +if ever at_least 17.3.7; then +    LIBDRM_REQUIRED='[>=2.4.91]' +elif ever at_least 17.2.0; then +    LIBDRM_REQUIRED='[>=2.4.82]' +elif ever at_least 17.1.3; then +    LIBDRM_REQUIRED='[>=2.4.80]' +else +    LIBDRM_REQUIRED='[>=2.4.69]' +fi + + +DEPENDENCIES=" +    build: +        dev-lang/python:2.7 +        sys-devel/bison +        sys-devel/flex +        virtual/pkg-config[>=0.9.0] +        !x11-dri/eclectic-opengl +        llvm? ( +             !llvm-static? ( dev-lang/llvm[>=3.7][-static] ) +             llvm-static? ( dev-lang/llvm[>=3.7][static] ) +        ) +        opencl? ( +            dev-lang/clang[>=3.4] +        ) +        video_drivers:radeon? ( dev-lang/llvm[>=3.6.0] ) +        X? ( x11-proto/xorgproto ) +    build+run: +        dev-libs/expat +        x11-dri/libdrm${LIBDRM_REQUIRED} +        opencl? ( dev-libs/libclc ) +        va? ( +            x11-libs/libX11 +            x11-libs/libva[>=1.6.0] +            x11-libs/libxcb${XCBDRI2_REQUIRED} +        ) +        vdpau? ( +            x11-libs/libX11 +            x11-libs/libvdpau[>=1.1] +            x11-libs/libxcb${XCBDRI2_REQUIRED} +        ) +        video_drivers:i915? ( x11-dri/libdrm[video_drivers:intel(+)] ) +        video_drivers:intel? ( x11-dri/libdrm[video_drivers:intel(+)] ) +        video_drivers:nouveau? ( x11-dri/libdrm[video_drivers:nouveau(-)] ) +        video_drivers:nouveau-legacy? ( x11-dri/libdrm[video_drivers:nouveau(-)] ) +        video_drivers:r300? ( x11-dri/libdrm[video_drivers:radeon(-)] ) +        video_drivers:radeon? ( +            dev-util/elfutils +            x11-dri/libdrm[video_drivers:radeon(-)] +        ) +        video_drivers:radeon-legacy? ( x11-dri/libdrm[video_drivers:radeon(-)] ) +        video_drivers:vc4? ( x11-dri/libdrm[video_drivers:vc4(-)] ) +        video_drivers:vmware? ( x11-dri/libdrm[video_drivers:vmware(-)] ) +        wayland? ( sys-libs/wayland[>=1.2.0] ) +        X? ( +            x11-libs/libICE +            x11-libs/libX11[xcb(+)] +            x11-libs/libXau +            x11-libs/libxcb[>=1.9.3] +            x11-libs/libXdamage[>=1.1.1] +            x11-libs/libXdmcp +            x11-libs/libXext +            x11-libs/libXfixes +            x11-libs/libxshmfence[>=1.1] +            x11-libs/libXxf86vm +        ) +        xvmc? ( +            x11-libs/libX11 +            x11-libs/libXvMC[>=1.0.6] +            x11-libs/libxcb${XCBDRI2_REQUIRED} +        ) +    run: +        llvm? ( +            !llvm-static? ( dev-lang/llvm[>=3.7][-static] ) +        ) +        opencl? ( +            dev-libs/ocl-icd +        ) +    suggestion: +        x11-dri/mesa-demos +" + +if ever at_least 13.0.0; then +    DEPENDENCIES+=" +        build+run: +            sensors? ( +                sys-apps/lm_sensors[>=3.4.0] +                [[ note = [ lm_sensors version in configure.ac is bogus ] ]] +            ) +    " +else +    DEPENDENCIES+=" +        build: +            providers:eudev? ( sys-apps/eudev ) +            providers:systemd? ( sys-apps/systemd[>=151] ) +    " +fi + +if ever at_least 12.0.0-rc1; then +    DEPENDENCIES+=" +        build: +            gl-vendor? ( dev-libs/libglvnd ) +            valgrind? ( dev-util/valgrind ) +    " +fi + +if ! ever at_least 17.1.3; then +    DEPENDENCIES+=" +        build+run: +            providers:gcrypt? ( dev-libs/libgcrypt ) +            providers:libressl? ( dev-libs/libressl:= ) +            providers:nettle? ( dev-libs/nettle ) +            providers:openssl? ( dev-libs/openssl ) +    " +fi + +if ever at_least 17.1.3; then +    DEPENDENCIES+=" +        build: +            dev-libs/libpthread-stubs[>=0.4] +            gl-vendor? ( dev-libs/libglvnd[>=0.2.0] ) +            video_drivers:radeon? ( dev-lang/llvm[>=3.9.0] ) +        build+run: +            sys-libs/zlib[>=1.2.3] +            wayland? ( sys-libs/wayland[>=1.11] ) +    " +fi + +if ever at_least 17.2.0; then +    DEPENDENCIES+=" +        build: +            dev-libs/libpthread-stubs[>=0.4] +            gl-vendor? ( dev-libs/libglvnd[>=0.2.0] ) +            video_drivers:radeon? ( dev-lang/llvm[>=3.9.0] ) +        build+run: +            sys-libs/zlib[>=1.2.3] +            wayland? ( +                sys-libs/wayland[>=1.11] +                sys-libs/wayland-protocols[>=1.8.0] +            ) +    " +fi + +if ever at_least 17.3.3; then +    DEPENDENCIES+=" +        build: +            opencl? ( dev-lang/llvm[>=3.9.0] ) +        build+run: +            !media-libs/libtxc_dxtn [[ +                description = [ mesa now bundles libtxc_dxtn ] +                resolution = uninstall-blocked-after +            ]] +    " +elif ever at_least 13.0.0; then +    DEPENDENCIES+=" +        build: +            dev-python/Mako[>=0.8.0][python_abis:2.7] +    " +else +    DEPENDENCIES+=" +        build: +            dev-python/Mako[>=0.3.4][python_abis:2.7] +    " +fi + +if ever at_least scm; then +    DEPENDENCIES+=" +        build: +            dev-python/Mako +    " +fi + +DEFAULT_SRC_TEST_PARAMS=( PTHREAD_LIBS="-lpthread" ) + +AT_M4DIR=( m4 ) + +mesa_src_configure() { +    DRI_DRIVERS=( ) +    EGL_PLATFORMS=( ) +    GALLIUM_DRIVERS_NOSW=( ) +    GALLIUM_DRIVERS=( ) +    VULKAN_DRIVERS=( ) + +    option !video_drivers:gallium-swrast    && DRI_DRIVERS+=( swrast ) +    option video_drivers:intel              && DRI_DRIVERS+=( i915 i965 ) +    option video_drivers:nouveau-legacy     && DRI_DRIVERS+=( nouveau ) +    option video_drivers:radeon-legacy      && DRI_DRIVERS+=( radeon r200 ) + +    # TODO: noop, swr, vc5, etnaviv, imx, pl111 +    option video_drivers:i915               && GALLIUM_DRIVERS_NOSW+=( i915 ) +    option video_drivers:nouveau            && GALLIUM_DRIVERS_NOSW+=( nouveau ) +    option video_drivers:r300               && GALLIUM_DRIVERS_NOSW+=( r300 ) +    option video_drivers:radeon             && GALLIUM_DRIVERS_NOSW+=( r600 radeonsi ) +    option video_drivers:vc4                && GALLIUM_DRIVERS_NOSW+=( vc4 ) +    option video_drivers:virtio-gpu         && GALLIUM_DRIVERS_NOSW+=( virgl ) +    option video_drivers:vmware             && GALLIUM_DRIVERS_NOSW+=( svga ) + +    # TODO: gallium-swr +    GALLIUM_DRIVERS=( "${GALLIUM_DRIVERS_NOSW[@]}" ) +    option video_drivers:gallium-swrast     && GALLIUM_DRIVERS+=( swrast ) + +    option X                                && EGL_PLATFORMS+=( x11 ) +    option wayland                          && EGL_PLATFORMS+=( wayland ) +                                               EGL_PLATFORMS+=( drm surfaceless ) + +    option video_drivers:intel              && VULKAN_DRIVERS+=( intel ) +    option video_drivers:radeon             && VULKAN_DRIVERS+=( radeon ) + +    local MESA_SRC_CONFIGURE_PARAMS + +    # NOTE(compnerd) disable the assembly dispatching.  The code is absolutely horrid, fragile, and +    # is disabled by other distributions as well (including Fedora and RHEL).  It is also broken +    # with LTO, and is not intended to be fixed.  https://bugs.freedesktop.org/show_bug.cgi?id=55080 +    MESA_SRC_CONFIGURE_PARAMS+=( +        $(option llvm && echo --with-llvm-prefix=/usr/$(exhost --target)) +        $($(option platform:x86 || option platform:amd64) && echo --disable-asm) +        --enable-osmesa # off-screen mesa +    ) + +    if [[ ${#DRI_DRIVERS[@]} -gt 0 ]]; then +        MESA_SRC_CONFIGURE_PARAMS+=( --with-dri-drivers=$(IFS=, ; echo "${DRI_DRIVERS[*]}") ) +    else +        MESA_SRC_CONFIGURE_PARAMS+=( --without-dri-drivers ) +    fi + +    if [[ ${#GALLIUM_DRIVERS[*]} -gt 0 ]] ; then +        MESA_SRC_CONFIGURE_PARAMS+=( --with-gallium-drivers=$(IFS=, ; echo "${GALLIUM_DRIVERS[*]}") ) +    else +        MESA_SRC_CONFIGURE_PARAMS+=( --without-gallium-drivers ) +    fi + +    if [[ ${#GALLIUM_DRIVERS_NOSW[*]} -gt 0 ]] ; then +        MESA_SRC_CONFIGURE_PARAMS+=( $(option video_drivers:gallium-swrast && echo "--enable-nine") ) +    fi + +    if ever at_least 12.0.0-rc1; then +        if [[ ${#VULKAN_DRIVERS[@]} -gt 0 ]]; then +            MESA_SRC_CONFIGURE_PARAMS+=( --with-vulkan-drivers=$(IFS=, ; echo "${VULKAN_DRIVERS[*]}") ) +        else +            MESA_SRC_CONFIGURE_PARAMS+=( --without-vulkan-drivers ) +        fi +        MESA_SRC_CONFIGURE_PARAMS+=( $(option_enable gl-vendor libglvnd) ) +    fi + +    # TODO gallium_tests +    # TODO state trackers: OpenMAX(omx), requires additional new dependency libomxil-bellagio + +    MESA_SRC_CONFIGURE_PARAMS+=( +          --with-pic +          --enable-dri +          --enable-egl +          --enable-gbm +          --enable-gles1 +          --enable-gles2 +          --enable-shared-glapi +          --disable-glx-read-only-text +          $(option_enable !llvm-static llvm-shared-libs) +          $(option_enable opencl) +          $(option_enable opencl opencl-icd) +          $(option_enable texture-float) +          $(option_enable va) +          $(option_enable vdpau) +          $(option_enable X dri3) +          $(option_enable X glx) +          $(option_enable X glx-tls) +          $(option_enable xa) +          $(option_enable xvmc) +    ) + +    if ever at_least 17.3.4; then +        MESA_SRC_CONFIGURE_PARAMS+=( +            --enable-driglx-direct +            --disable-omx-bellagio +        ) +    else +        MESA_SRC_CONFIGURE_PARAMS+=( +            --disable-omx +        ) +    fi + +    if ever at_least 12.0.0-rc1; then +        MESA_SRC_CONFIGURE_PARAMS+=( $(option_enable valgrind) ) +    fi + +    if ! ever at_least 12.0.2; then +        MESA_SRC_CONFIGURE_PARAMS+=( +            $(option_enable video_drivers:radeon r600-llvm-compiler) +        ) +    fi + +    if ever at_least 13.0.0; then +        MESA_SRC_CONFIGURE_PARAMS+=( +            $(option_enable sensors lmsensors) +            $(option_enable sensors gallium_extra_hud) +        ) +    else +        MESA_SRC_CONFIGURE_PARASM+=( +            --disable-sysfs +        ) +    fi + +    if ever at_least 17.1.3; then +        MESA_SRC_CONFIGURE_PARAMS+=( +            --disable-libunwind +            --with-platforms=$(IFS=, ; echo "${EGL_PLATFORMS[*]}") +            --with-wayland-scanner-path=/usr/$(exhost --build)/bin/wayland-scanner +            $(option_enable llvm) +        ) +    else +        MESA_SRC_CONFIGURE_PARAMS+=( +            --enable-shader-cache +            --with-egl-platforms=$(IFS=, ; echo "${EGL_PLATFORMS[*]}") +            $(option_enable llvm gallium-llvm) +        ) +        if option providers:libressl || option providers:openssl; then +            MESA_SRC_CONFIGURE_PARAMS+=( +                --with-sha1=libcrypto +            ) +        elif option providers:gcrypt; then +            MESA_SRC_CONFIGURE_PARAMS+=( +                --with-sha1=libgcrypt +            ) +        elif option providers:nettle; then +            MESA_SRC_CONFIGURE_PARAMS+=( +                --with-sha1=libnettle +            ) +        fi +    fi + +    # Fix using the 32bit python while it isn't needed. +    # TODO: Something with python.exlib to require the neccessary modules to be built for the +    #       selected python. +    #PYTHON2=/usr/bin/python2 \ +    # TODO: check if something similar to the above might be necessary when cross-compiling +    # mesa. Obviously the path doesn't work on cross. (heirecka) +    econf "${MESA_SRC_CONFIGURE_PARAMS[@]}" +} + +mesa_src_install() { +    dodir /usr + +    local host=$(exhost --target) +    local X_alternatives=() + +    default + +    # alternatives +    local libs=(libEGL libGLESv1_CM libGLESv2) +    option X && libs+=(libGL) + +    edo mkdir "${IMAGE}"/usr/${host}/lib/opengl/ + +    local lib path_old path_new soname +    for lib in "${libs[@]}"; do +        path_new=/usr/${host}/lib/opengl/${lib}-xorg.so +        path_old=$(readlink -f "${IMAGE}"/usr/${host}/lib/${lib}.so) + +        edo mv \ +            "${path_old}" \ +            "${IMAGE}"/${path_new} + +        local objdump=$(exhost --tool-prefix)objdump +        soname=$(edo ${objdump} -p "${IMAGE}"/${path_new} | sed -n 's/^ *SONAME *//p') + +        # clean up the leftover symlinks +        edo rm "${IMAGE}"/usr/${host}/lib/{${lib}.so,${soname}} + +        X_alternatives+=( +            /usr/${host}/lib/${lib}.so ${path_new} +            /usr/${host}/lib/${soname} ${path_new} +        ) +    done + +    alternatives_for opengl X.org 10 ${X_alternatives[@]} + +    edo rm -rf "${IMAGE}"/usr/${host}/include/GL/{glew,glxew,wglew}.h +} + +mesa_pkg_postinst() { +    # Clean up after old eclectic-opengl module +    if [[ -f ${ROOT}/etc/env.d/03opengl ]] ; then +        rm "${ROOT}/etc/env.d/03opengl" || ewarn "Remove /etc/env.d/03opengl manually" +    fi + +    alternatives_pkg_postinst +} +  | 
