uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
33
pkgs/development/libraries/mesa/aarch64-darwin.patch
Normal file
33
pkgs/development/libraries/mesa/aarch64-darwin.patch
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
From 8ac29b952e638ec1ea8c3734a3b91253e50c336d Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
|
||||
Date: Sun, 24 Jan 2021 21:10:29 -0800
|
||||
Subject: [PATCH 4/4] Hack to address build failure when using newer macOS SDKs
|
||||
with older deployment targets
|
||||
|
||||
Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
|
||||
---
|
||||
include/c11/threads_posix.h | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/c11/threads_posix.h b/include/c11/threads_posix.h
|
||||
index 45cb6075e6e..355d725f7da 100644
|
||||
--- a/include/c11/threads_posix.h
|
||||
+++ b/include/c11/threads_posix.h
|
||||
@@ -382,7 +382,13 @@ tss_set(tss_t key, void *val)
|
||||
|
||||
/*-------------------- 7.25.7 Time functions --------------------*/
|
||||
// 7.25.6.1
|
||||
-#ifndef HAVE_TIMESPEC_GET
|
||||
+#if !defined(HAVE_TIMESPEC_GET) || defined(__APPLE__)
|
||||
+
|
||||
+#ifdef __APPLE__
|
||||
+#include <time.h>
|
||||
+#define timespec_get(ts, b) mesa_timespec_get(ts, b)
|
||||
+#endif
|
||||
+
|
||||
static inline int
|
||||
timespec_get(struct timespec *ts, int base)
|
||||
{
|
||||
--
|
||||
2.29.2 (Apple Git-129)
|
||||
|
||||
286
pkgs/development/libraries/mesa/default.nix
Normal file
286
pkgs/development/libraries/mesa/default.nix
Normal file
|
|
@ -0,0 +1,286 @@
|
|||
{ stdenv, lib, fetchurl, fetchpatch, buildPackages
|
||||
, meson, pkg-config, ninja
|
||||
, intltool, bison, flex, file, python3Packages, wayland-scanner
|
||||
, expat, libdrm, xorg, wayland, wayland-protocols, openssl
|
||||
, llvmPackages, libffi, libomxil-bellagio, libva-minimal
|
||||
, libelf, libvdpau
|
||||
, libglvnd, libunwind
|
||||
, vulkan-loader
|
||||
, galliumDrivers ? ["auto"]
|
||||
, vulkanDrivers ? ["auto"]
|
||||
, eglPlatforms ? [ "x11" ] ++ lib.optionals stdenv.isLinux [ "wayland" ]
|
||||
, OpenGL, Xplugin
|
||||
, withValgrind ? lib.meta.availableOn stdenv.hostPlatform valgrind-light && !valgrind-light.meta.broken, valgrind-light
|
||||
, enableGalliumNine ? stdenv.isLinux
|
||||
, enableOSMesa ? stdenv.isLinux
|
||||
, enableOpenCL ? stdenv.isLinux && stdenv.isx86_64
|
||||
, libclc
|
||||
, jdupes
|
||||
}:
|
||||
|
||||
/** Packaging design:
|
||||
- The basic mesa ($out) contains headers and libraries (GLU is in libGLU now).
|
||||
This or the mesa attribute (which also contains GLU) are small (~ 2 MB, mostly headers)
|
||||
and are designed to be the buildInput of other packages.
|
||||
- DRI drivers are compiled into $drivers output, which is much bigger and
|
||||
depends on LLVM. These should be searched at runtime in
|
||||
"/run/opengl-driver{,-32}/lib/*" and so are kind-of impure (given by NixOS).
|
||||
(I suppose on non-NixOS one would create the appropriate symlinks from there.)
|
||||
- libOSMesa is in $osmesa (~4 MB)
|
||||
*/
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
# Release calendar: https://www.mesa3d.org/release-calendar.html
|
||||
# Release frequency: https://www.mesa3d.org/releasing.html#schedule
|
||||
version = "22.0.4";
|
||||
branch = versions.major version;
|
||||
|
||||
self = stdenv.mkDerivation {
|
||||
pname = "mesa";
|
||||
inherit version;
|
||||
|
||||
src = fetchurl {
|
||||
urls = [
|
||||
"https://mesa.freedesktop.org/archive/mesa-${version}.tar.xz"
|
||||
"ftp://ftp.freedesktop.org/pub/mesa/mesa-${version}.tar.xz"
|
||||
"ftp://ftp.freedesktop.org/pub/mesa/${version}/mesa-${version}.tar.xz"
|
||||
"ftp://ftp.freedesktop.org/pub/mesa/older-versions/${branch}.x/${version}/mesa-${version}.tar.xz"
|
||||
];
|
||||
sha256 = "1m0y8wgy48hmcidsr7sbk5hcw3v0qr8359fd2x34fvl2z9c1z5y7";
|
||||
};
|
||||
|
||||
# TODO:
|
||||
# revive ./dricore-gallium.patch when it gets ported (from Ubuntu), as it saved
|
||||
# ~35 MB in $drivers; watch https://launchpad.net/ubuntu/+source/mesa/+changelog
|
||||
patches = [
|
||||
# fixes pkgsMusl.mesa build
|
||||
./musl.patch
|
||||
(fetchpatch {
|
||||
url = "https://raw.githubusercontent.com/void-linux/void-packages/b9f58f303ae23754c95d5d1fe87a98b5a2d8f271/srcpkgs/mesa/patches/musl-endian.patch";
|
||||
sha256 = "sha256-eRc91qCaFlVzrxFrNUPpAHd1gsqKsLCCN0IW8pBQcqk=";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://raw.githubusercontent.com/void-linux/void-packages/b9f58f303ae23754c95d5d1fe87a98b5a2d8f271/srcpkgs/mesa/patches/musl-stacksize.patch";
|
||||
sha256 = "sha256-bEp0AWddsw1Pc3rxdKN8fsrX4x2TQEzMUa5afhLXGsg=";
|
||||
})
|
||||
|
||||
./opencl.patch
|
||||
./disk_cache-include-dri-driver-path-in-cache-key.patch
|
||||
] ++ optionals (stdenv.isDarwin && stdenv.isAarch64) [
|
||||
# Fix aarch64-darwin build, remove when upstreaam supports it out of the box.
|
||||
# See: https://gitlab.freedesktop.org/mesa/mesa/-/issues/1020
|
||||
./aarch64-darwin.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs .
|
||||
|
||||
substituteInPlace meson.build --replace \
|
||||
"find_program('pkg-config')" \
|
||||
"find_program('${buildPackages.pkg-config.targetPrefix}pkg-config')"
|
||||
|
||||
# The drirc.d directory cannot be installed to $drivers as that would cause a cyclic dependency:
|
||||
substituteInPlace src/util/xmlconfig.c --replace \
|
||||
'DATADIR "/drirc.d"' '"${placeholder "out"}/share/drirc.d"'
|
||||
substituteInPlace src/util/meson.build --replace \
|
||||
"get_option('datadir')" "'${placeholder "out"}/share'"
|
||||
'' + lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
|
||||
substituteInPlace meson.build --replace \
|
||||
"find_program('nm')" \
|
||||
"find_program('${stdenv.cc.targetPrefix}nm')"
|
||||
'';
|
||||
|
||||
outputs = [ "out" "dev" "drivers" ]
|
||||
++ lib.optional enableOSMesa "osmesa"
|
||||
++ lib.optional stdenv.isLinux "driversdev"
|
||||
++ lib.optional enableOpenCL "opencl";
|
||||
|
||||
preConfigure = ''
|
||||
PATH=${llvmPackages.libllvm.dev}/bin:$PATH
|
||||
'';
|
||||
|
||||
# TODO: Figure out how to enable opencl without having a runtime dependency on clang
|
||||
mesonFlags = [
|
||||
"--sysconfdir=/etc"
|
||||
"--datadir=${placeholder "drivers"}/share" # Vendor files
|
||||
|
||||
# Don't build in debug mode
|
||||
# https://gitlab.freedesktop.org/mesa/mesa/blob/master/docs/meson.html#L327
|
||||
"-Db_ndebug=true"
|
||||
|
||||
"-Ddisk-cache-key=${placeholder "drivers"}"
|
||||
"-Ddri-search-path=${libglvnd.driverLink}/lib/dri"
|
||||
|
||||
"-Dplatforms=${concatStringsSep "," eglPlatforms}"
|
||||
"-Dgallium-drivers=${concatStringsSep "," galliumDrivers}"
|
||||
"-Dvulkan-drivers=${concatStringsSep "," vulkanDrivers}"
|
||||
|
||||
"-Ddri-drivers-path=${placeholder "drivers"}/lib/dri"
|
||||
"-Dvdpau-libs-path=${placeholder "drivers"}/lib/vdpau"
|
||||
"-Dxvmc-libs-path=${placeholder "drivers"}/lib"
|
||||
"-Domx-libs-path=${placeholder "drivers"}/lib/bellagio"
|
||||
"-Dva-libs-path=${placeholder "drivers"}/lib/dri"
|
||||
"-Dd3d-drivers-path=${placeholder "drivers"}/lib/d3d"
|
||||
"-Dgallium-nine=${boolToString enableGalliumNine}" # Direct3D in Wine
|
||||
"-Dosmesa=${boolToString enableOSMesa}" # used by wine
|
||||
"-Dmicrosoft-clc=disabled" # Only relevant on Windows (OpenCL 1.2 API on top of D3D12)
|
||||
|
||||
# To enable non-mesa gbm backends to be found (e.g. Nvidia)
|
||||
"-Dgbm-backends-path=${libglvnd.driverLink}/lib/gbm:${placeholder "out"}/lib/gbm"
|
||||
] ++ optionals stdenv.isLinux [
|
||||
"-Dglvnd=true"
|
||||
] ++ optionals enableOpenCL [
|
||||
"-Dgallium-opencl=icd" # Enable the gallium OpenCL frontend
|
||||
"-Dclang-libdir=${llvmPackages.clang-unwrapped.lib}/lib"
|
||||
];
|
||||
|
||||
buildInputs = with xorg; [
|
||||
expat llvmPackages.libllvm libglvnd xorgproto
|
||||
libX11 libXext libxcb libXt libXfixes libxshmfence libXrandr
|
||||
libffi libvdpau libelf libXvMC
|
||||
libpthreadstubs openssl /*or another sha1 provider*/
|
||||
] ++ lib.optionals (elem "wayland" eglPlatforms) [ wayland wayland-protocols ]
|
||||
++ lib.optionals stdenv.isLinux [ libomxil-bellagio libva-minimal ]
|
||||
++ lib.optionals stdenv.isDarwin [ libunwind ]
|
||||
++ lib.optionals enableOpenCL [ libclc llvmPackages.clang llvmPackages.clang-unwrapped ]
|
||||
++ lib.optional withValgrind valgrind-light
|
||||
# Mesa will not build zink when gallium-drivers=auto
|
||||
++ lib.optional (elem "zink" galliumDrivers) vulkan-loader;
|
||||
|
||||
depsBuildBuild = [ pkg-config ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson pkg-config ninja
|
||||
intltool bison flex file
|
||||
python3Packages.python python3Packages.Mako
|
||||
jdupes
|
||||
] ++ lib.optionals (elem "wayland" eglPlatforms) [
|
||||
wayland-scanner
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with xorg; [
|
||||
libXdamage libXxf86vm
|
||||
] ++ optional stdenv.isLinux libdrm
|
||||
++ optionals stdenv.isDarwin [ OpenGL Xplugin ];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
postInstall = ''
|
||||
# Some installs don't have any drivers so this directory is never created.
|
||||
mkdir -p $drivers $osmesa
|
||||
'' + optionalString stdenv.isLinux ''
|
||||
mkdir -p $drivers/lib
|
||||
|
||||
if [ -n "$(shopt -s nullglob; echo "$out/lib/libxatracker"*)" -o -n "$(shopt -s nullglob; echo "$out/lib/libvulkan_"*)" ]; then
|
||||
# move gallium-related stuff to $drivers, so $out doesn't depend on LLVM
|
||||
mv -t $drivers/lib \
|
||||
$out/lib/libxatracker* \
|
||||
$out/lib/libvulkan_*
|
||||
fi
|
||||
|
||||
if [ -n "$(shopt -s nullglob; echo "$out"/lib/lib*_mesa*)" ]; then
|
||||
# Move other drivers to a separate output
|
||||
mv -t $drivers/lib $out/lib/lib*_mesa*
|
||||
fi
|
||||
|
||||
# Update search path used by glvnd
|
||||
for js in $drivers/share/glvnd/egl_vendor.d/*.json; do
|
||||
substituteInPlace "$js" --replace '"libEGL_' '"'"$drivers/lib/libEGL_"
|
||||
done
|
||||
|
||||
# Update search path used by Vulkan (it's pointing to $out but
|
||||
# drivers are in $drivers)
|
||||
for js in $drivers/share/vulkan/icd.d/*.json; do
|
||||
substituteInPlace "$js" --replace "$out" "$drivers"
|
||||
done
|
||||
'' + optionalString enableOpenCL ''
|
||||
# Move OpenCL stuff
|
||||
mkdir -p $opencl/lib
|
||||
mv -t "$opencl/lib/" \
|
||||
$out/lib/gallium-pipe \
|
||||
$out/lib/libMesaOpenCL*
|
||||
|
||||
# We construct our own .icd file that contains an absolute path.
|
||||
rm -r $out/etc/OpenCL
|
||||
mkdir -p $opencl/etc/OpenCL/vendors/
|
||||
echo $opencl/lib/libMesaOpenCL.so > $opencl/etc/OpenCL/vendors/mesa.icd
|
||||
'' + lib.optionalString enableOSMesa ''
|
||||
# move libOSMesa to $osmesa, as it's relatively big
|
||||
mkdir -p $osmesa/lib
|
||||
mv -t $osmesa/lib/ $out/lib/libOSMesa*
|
||||
'';
|
||||
|
||||
postFixup = optionalString stdenv.isLinux ''
|
||||
# set the default search path for DRI drivers; used e.g. by X server
|
||||
substituteInPlace "$dev/lib/pkgconfig/dri.pc" --replace "$drivers" "${libglvnd.driverLink}"
|
||||
[ -f "$dev/lib/pkgconfig/d3d.pc" ] && substituteInPlace "$dev/lib/pkgconfig/d3d.pc" --replace "$drivers" "${libglvnd.driverLink}"
|
||||
|
||||
# remove pkgconfig files for GL/EGL; they are provided by libGL.
|
||||
rm -f $dev/lib/pkgconfig/{gl,egl}.pc
|
||||
|
||||
# Move development files for libraries in $drivers to $driversdev
|
||||
mkdir -p $driversdev/include
|
||||
mv $dev/include/xa_* $dev/include/d3d* -t $driversdev/include || true
|
||||
mkdir -p $driversdev/lib/pkgconfig
|
||||
for pc in lib/pkgconfig/{xatracker,d3d}.pc; do
|
||||
if [ -f "$dev/$pc" ]; then
|
||||
substituteInPlace "$dev/$pc" --replace $out $drivers
|
||||
mv $dev/$pc $driversdev/$pc
|
||||
fi
|
||||
done
|
||||
|
||||
# NAR doesn't support hard links, so convert them to symlinks to save space.
|
||||
jdupes --hard-links --link-soft --recurse "$drivers"
|
||||
|
||||
# add RPATH so the drivers can find the moved libgallium and libdricore9
|
||||
# moved here to avoid problems with stripping patchelfed files
|
||||
for lib in $drivers/lib/*.so* $drivers/lib/*/*.so*; do
|
||||
if [[ ! -L "$lib" ]]; then
|
||||
patchelf --set-rpath "$(patchelf --print-rpath $lib):$drivers/lib" "$lib"
|
||||
fi
|
||||
done
|
||||
'';
|
||||
|
||||
NIX_CFLAGS_COMPILE = optionals stdenv.isDarwin [ "-fno-common" ] ++ lib.optionals enableOpenCL [
|
||||
"-UPIPE_SEARCH_DIR"
|
||||
"-DPIPE_SEARCH_DIR=\"${placeholder "opencl"}/lib/gallium-pipe\""
|
||||
];
|
||||
|
||||
passthru = {
|
||||
inherit libdrm;
|
||||
inherit (libglvnd) driverLink;
|
||||
inherit llvmPackages;
|
||||
|
||||
tests = lib.optionalAttrs stdenv.isLinux {
|
||||
devDoesNotDependOnLLVM = stdenv.mkDerivation {
|
||||
name = "mesa-dev-does-not-depend-on-llvm";
|
||||
buildCommand = ''
|
||||
echo ${self.dev} >>$out
|
||||
'';
|
||||
disallowedRequisites = [ llvmPackages.llvm self.drivers ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "An open source 3D graphics library";
|
||||
longDescription = ''
|
||||
The Mesa project began as an open-source implementation of the OpenGL
|
||||
specification - a system for rendering interactive 3D graphics. Over the
|
||||
years the project has grown to implement more graphics APIs, including
|
||||
OpenGL ES (versions 1, 2, 3), OpenCL, OpenMAX, VDPAU, VA API, XvMC, and
|
||||
Vulkan. A variety of device drivers allows the Mesa libraries to be used
|
||||
in many different environments ranging from software emulation to
|
||||
complete hardware acceleration for modern GPUs.
|
||||
'';
|
||||
homepage = "https://www.mesa3d.org/";
|
||||
changelog = "https://www.mesa3d.org/relnotes/${version}.html";
|
||||
license = licenses.mit; # X11 variant, in most files
|
||||
platforms = platforms.mesaPlatforms;
|
||||
maintainers = with maintainers; [ primeos vcunat ]; # Help is welcome :)
|
||||
};
|
||||
};
|
||||
|
||||
in self
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
From 980164fd92f5c2302624cd046d30ff21e6e4ba8a Mon Sep 17 00:00:00 2001
|
||||
From: David McFarland <corngood@gmail.com>
|
||||
Date: Mon, 6 Aug 2018 15:52:11 -0300
|
||||
Subject: [PATCH] disk_cache: include dri driver path in cache key
|
||||
|
||||
This fixes invalid cache hits on NixOS where all shared library
|
||||
timestamps in /nix/store are zero.
|
||||
---
|
||||
meson_options.txt | 6 ++++++
|
||||
src/util/disk_cache.c | 3 +++
|
||||
src/util/meson.build | 7 ++++++-
|
||||
3 files changed, 15 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/meson_options.txt b/meson_options.txt
|
||||
index 2d39d13b6ad..daf06480a60 100644
|
||||
--- a/meson_options.txt
|
||||
+++ b/meson_options.txt
|
||||
@@ -368,6 +368,12 @@ option(
|
||||
value : true,
|
||||
description : 'Enable direct rendering in GLX and EGL for DRI',
|
||||
)
|
||||
+option(
|
||||
+ 'disk-cache-key',
|
||||
+ type : 'string',
|
||||
+ value : '',
|
||||
+ description : 'Mesa cache key.'
|
||||
+)
|
||||
option(
|
||||
'prefer-iris',
|
||||
type : 'boolean',
|
||||
diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c
|
||||
index a92d621927a..3bd65c6890c 100644
|
||||
--- a/src/util/disk_cache.c
|
||||
+++ b/src/util/disk_cache.c
|
||||
@@ -401,8 +401,10 @@ disk_cache_create(const char *gpu_name, const char *driver_id,
|
||||
|
||||
/* Create driver id keys */
|
||||
size_t id_size = strlen(driver_id) + 1;
|
||||
+ size_t key_size = strlen(DISK_CACHE_KEY) + 1;
|
||||
size_t gpu_name_size = strlen(gpu_name) + 1;
|
||||
cache->driver_keys_blob_size += id_size;
|
||||
+ cache->driver_keys_blob_size += key_size;
|
||||
cache->driver_keys_blob_size += gpu_name_size;
|
||||
|
||||
/* We sometimes store entire structs that contains a pointers in the cache,
|
||||
@@ -423,6 +425,7 @@ disk_cache_create(const char *gpu_name, const char *driver_id,
|
||||
uint8_t *drv_key_blob = cache->driver_keys_blob;
|
||||
DRV_KEY_CPY(drv_key_blob, &cache_version, cv_size)
|
||||
DRV_KEY_CPY(drv_key_blob, driver_id, id_size)
|
||||
+ DRV_KEY_CPY(drv_key_blob, DISK_CACHE_KEY, key_size)
|
||||
DRV_KEY_CPY(drv_key_blob, gpu_name, gpu_name_size)
|
||||
DRV_KEY_CPY(drv_key_blob, &ptr_size, ptr_size_size)
|
||||
DRV_KEY_CPY(drv_key_blob, &driver_flags, driver_flags_size)
|
||||
diff --git a/src/util/meson.build b/src/util/meson.build
|
||||
index 0893f64793b..d46ce85a85f 100644
|
||||
--- a/src/util/meson.build
|
||||
+++ b/src/util/meson.build
|
||||
@@ -179,7 +179,12 @@ _libmesa_util = static_library(
|
||||
include_directories : [inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
|
||||
dependencies : deps_for_libmesa_util,
|
||||
link_with: libmesa_format,
|
||||
- c_args : [c_msvc_compat_args],
|
||||
+ c_args : [
|
||||
+ c_msvc_compat_args,
|
||||
+ '-DDISK_CACHE_KEY="@0@"'.format(
|
||||
+ get_option('disk-cache-key')
|
||||
+ ),
|
||||
+ ],
|
||||
gnu_symbol_visibility : 'hidden',
|
||||
build_by_default : false
|
||||
)
|
||||
--
|
||||
2.28.0
|
||||
|
||||
59
pkgs/development/libraries/mesa/musl.patch
Normal file
59
pkgs/development/libraries/mesa/musl.patch
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h
|
||||
index 06ca90564f0..bb244f8f358 100644
|
||||
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h
|
||||
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
#include <amdgpu.h>
|
||||
#include <pthread.h>
|
||||
+#include <sys/types.h>
|
||||
#include "util/list.h"
|
||||
#include "util/rwlock.h"
|
||||
#include "ac_gpu_info.h"
|
||||
diff --git a/src/gallium/drivers/freedreno/freedreno_util.h b/src/gallium/drivers/freedreno/freedreno_util.h
|
||||
index 22f99c41909..2f3195926be 100644
|
||||
--- a/src/gallium/drivers/freedreno/freedreno_util.h
|
||||
+++ b/src/gallium/drivers/freedreno/freedreno_util.h
|
||||
@@ -108,6 +108,8 @@ extern bool fd_binning_enabled;
|
||||
#include <sys/types.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
+#define gettid() ((pid_t)syscall(SYS_gettid))
|
||||
+
|
||||
#define DBG(fmt, ...) \
|
||||
do { \
|
||||
if (FD_DBG(MSGS)) \
|
||||
diff --git a/src/gallium/frontends/nine/nine_debug.c b/src/gallium/frontends/nine/nine_debug.c
|
||||
index f3a6a945025..f4a6c41a612 100644
|
||||
--- a/src/gallium/frontends/nine/nine_debug.c
|
||||
+++ b/src/gallium/frontends/nine/nine_debug.c
|
||||
@@ -65,7 +65,7 @@ _nine_debug_printf( unsigned long flag,
|
||||
{
|
||||
static boolean first = TRUE;
|
||||
static unsigned long dbg_flags = DBG_ERROR | DBG_WARN;
|
||||
- unsigned long tid = 0;
|
||||
+ pthread_t tid = 0;
|
||||
|
||||
if (first) {
|
||||
first = FALSE;
|
||||
@@ -74,7 +74,7 @@ _nine_debug_printf( unsigned long flag,
|
||||
|
||||
#if defined(HAVE_PTHREAD)
|
||||
if (dbg_flags & DBG_TID)
|
||||
- tid = (unsigned long)pthread_self();
|
||||
+ tid = pthread_self();
|
||||
#endif
|
||||
|
||||
if (dbg_flags & flag) {
|
||||
diff --git a/src/util/rand_xor.c b/src/util/rand_xor.c
|
||||
index 81b64f1ea71..56ebd2eccdf 100644
|
||||
--- a/src/util/rand_xor.c
|
||||
+++ b/src/util/rand_xor.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#if defined(HAVE_GETRANDOM)
|
||||
#include <sys/random.h>
|
||||
#endif
|
||||
+#include <sys/types.h> /* size_t, ssize_t */
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#endif
|
||||
70
pkgs/development/libraries/mesa/opencl.patch
Normal file
70
pkgs/development/libraries/mesa/opencl.patch
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
diff --git a/meson_options.txt b/meson_options.txt
|
||||
index a7030aba31e..1d2d8814992 100644
|
||||
--- a/meson_options.txt
|
||||
+++ b/meson_options.txt
|
||||
@@ -18,6 +18,12 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
|
||||
+option(
|
||||
+ 'clang-libdir',
|
||||
+ type : 'string',
|
||||
+ value : '',
|
||||
+ description : 'Locations to search for clang libraries.'
|
||||
+)
|
||||
option(
|
||||
'platforms',
|
||||
type : 'array',
|
||||
diff --git a/src/gallium/targets/opencl/meson.build b/src/gallium/targets/opencl/meson.build
|
||||
index b77826b6e1e..14fa9ba7177 100644
|
||||
--- a/src/gallium/targets/opencl/meson.build
|
||||
+++ b/src/gallium/targets/opencl/meson.build
|
||||
@@ -30,6 +30,7 @@ if with_ld_version_script
|
||||
endif
|
||||
|
||||
llvm_libdir = dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir')
|
||||
+clang_libdir = get_option('clang-libdir')
|
||||
opencl_libname = with_opencl_icd ? 'MesaOpenCL' : 'OpenCL'
|
||||
|
||||
polly_dep = null_dep
|
||||
@@ -60,19 +61,19 @@ else
|
||||
endif
|
||||
if not (dep_clang.found() and dep_clang_usable)
|
||||
dep_clang = [
|
||||
- cpp.find_library('clangCodeGen', dirs : llvm_libdir),
|
||||
- cpp.find_library('clangFrontendTool', dirs : llvm_libdir),
|
||||
- cpp.find_library('clangFrontend', dirs : llvm_libdir),
|
||||
- cpp.find_library('clangDriver', dirs : llvm_libdir),
|
||||
- cpp.find_library('clangSerialization', dirs : llvm_libdir),
|
||||
- cpp.find_library('clangParse', dirs : llvm_libdir),
|
||||
- cpp.find_library('clangSema', dirs : llvm_libdir),
|
||||
- cpp.find_library('clangAnalysis', dirs : llvm_libdir),
|
||||
- cpp.find_library('clangAST', dirs : llvm_libdir),
|
||||
- cpp.find_library('clangASTMatchers', dirs : llvm_libdir),
|
||||
- cpp.find_library('clangEdit', dirs : llvm_libdir),
|
||||
- cpp.find_library('clangLex', dirs : llvm_libdir),
|
||||
- cpp.find_library('clangBasic', dirs : llvm_libdir),
|
||||
+ cpp.find_library('clangCodeGen', dirs : clang_libdir),
|
||||
+ cpp.find_library('clangFrontendTool', dirs : clang_libdir),
|
||||
+ cpp.find_library('clangFrontend', dirs : clang_libdir),
|
||||
+ cpp.find_library('clangDriver', dirs : clang_libdir),
|
||||
+ cpp.find_library('clangSerialization', dirs : clang_libdir),
|
||||
+ cpp.find_library('clangParse', dirs : clang_libdir),
|
||||
+ cpp.find_library('clangSema', dirs : clang_libdir),
|
||||
+ cpp.find_library('clangAnalysis', dirs : clang_libdir),
|
||||
+ cpp.find_library('clangAST', dirs : clang_libdir),
|
||||
+ cpp.find_library('clangASTMatchers', dirs : clang_libdir),
|
||||
+ cpp.find_library('clangEdit', dirs : clang_libdir),
|
||||
+ cpp.find_library('clangLex', dirs : clang_libdir),
|
||||
+ cpp.find_library('clangBasic', dirs : clang_libdir),
|
||||
polly_dep, polly_isl_dep,
|
||||
]
|
||||
# check clang once more
|
||||
@@ -120,6 +121,6 @@ if with_opencl_icd
|
||||
input : 'mesa.icd.in',
|
||||
output : 'mesa.icd',
|
||||
install : true,
|
||||
- install_dir : join_paths(get_option('sysconfdir'), 'OpenCL', 'vendors'),
|
||||
+ install_dir : join_paths(get_option('prefix'), 'etc', 'OpenCL', 'vendors'),
|
||||
)
|
||||
endif
|
||||
75
pkgs/development/libraries/mesa/stubs.nix
Normal file
75
pkgs/development/libraries/mesa/stubs.nix
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
{ stdenv
|
||||
, libglvnd, mesa
|
||||
, OpenGL }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
inherit (libglvnd) version;
|
||||
pname = "libGL";
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
# On macOS, libglvnd is not supported, so we just use what mesa
|
||||
# build. We need to also include OpenGL.framework, and some
|
||||
# extra tricks to go along with. We add mesa’s libGLX to support
|
||||
# the X extensions to OpenGL.
|
||||
buildCommand = if stdenv.hostPlatform.isDarwin then ''
|
||||
mkdir -p $out/nix-support $dev
|
||||
echo ${OpenGL} >> $out/nix-support/propagated-build-inputs
|
||||
ln -s ${mesa.out}/lib $out/lib
|
||||
|
||||
mkdir -p $dev/lib/pkgconfig $dev/nix-support
|
||||
echo "$out" > $dev/nix-support/propagated-build-inputs
|
||||
ln -s ${mesa.dev}/include $dev/include
|
||||
|
||||
cat <<EOF >$dev/lib/pkgconfig/gl.pc
|
||||
Name: gl
|
||||
Description: gl library
|
||||
Version: ${mesa.version}
|
||||
Libs: -L${mesa.out}/lib -lGL
|
||||
Cflags: -I${mesa.dev}/include
|
||||
EOF
|
||||
|
||||
cat <<EOF >$dev/lib/pkgconfig/glesv1_cm.pc
|
||||
Name: glesv1_cm
|
||||
Description: glesv1_cm library
|
||||
Version: ${mesa.version}
|
||||
Libs: -L${mesa.out}/lib -lGLESv1_CM
|
||||
Cflags: -I${mesa.dev}/include
|
||||
EOF
|
||||
|
||||
cat <<EOF >$dev/lib/pkgconfig/glesv2.pc
|
||||
Name: glesv2
|
||||
Description: glesv2 library
|
||||
Version: ${mesa.version}
|
||||
Libs: -L${mesa.out}/lib -lGLESv2
|
||||
Cflags: -I${mesa.dev}/include
|
||||
EOF
|
||||
''
|
||||
|
||||
# Otherwise, setup gl stubs to use libglvnd.
|
||||
else ''
|
||||
mkdir -p $out/nix-support
|
||||
ln -s ${libglvnd.out}/lib $out/lib
|
||||
|
||||
mkdir -p $dev/{,lib/pkgconfig,nix-support}
|
||||
echo "$out ${libglvnd} ${libglvnd.dev}" > $dev/nix-support/propagated-build-inputs
|
||||
ln -s ${libglvnd.dev}/include $dev/include
|
||||
|
||||
genPkgConfig() {
|
||||
local name="$1"
|
||||
local lib="$2"
|
||||
|
||||
cat <<EOF >$dev/lib/pkgconfig/$name.pc
|
||||
Name: $name
|
||||
Description: $lib library
|
||||
Version: ${libglvnd.version}
|
||||
Libs: -L${libglvnd.out}/lib -l$lib
|
||||
Cflags: -I${libglvnd.dev}/include
|
||||
EOF
|
||||
}
|
||||
|
||||
genPkgConfig gl GL
|
||||
genPkgConfig egl EGL
|
||||
genPkgConfig glesv1_cm GLESv1_CM
|
||||
genPkgConfig glesv2 GLESv2
|
||||
'';
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue