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 +} + |