Ravenports generated: 29 Sep 2021 02:35
[ravenports.git] / bucket_F0 / mesa
1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
2
3 NAMEBASE=               mesa
4 VERSION=                21.2.2
5 KEYWORDS=               graphics
6 VARIANTS=               standard
7 SDESC[standard]=        Mesa 3D Graphics Library
8 HOMEPAGE=               https://www.mesa3d.org/
9 CONTACT=                nobody
10
11 DOWNLOAD_GROUPS=        main
12 SITES[main]=            https://mesa.freedesktop.org/archive/
13                         ftp://ftp.freedesktop.org/pub/mesa/
14 DISTFILE[1]=            mesa-21.2.2.tar.xz:main
15 DF_INDEX=               1
16 SPKGS[standard]=        complete
17                         libs
18                         drivers
19
20 OPTIONS_AVAILABLE=      X86_DRIVERS ARM_DRIVERS LLVMPIPE WAYLAND
21 OPTIONS_STANDARD=       X86_DRIVERS ARM_DRIVERS LLVMPIPE
22 OPT_ON[freebsd]=        LLVMPIPE//i386|x86_64
23 OPT_ON[aarch64]=        ARM_DRIVERS
24 OPT_ON[linux]=          LLVMPIPE//i386|x86_64
25 OPT_ON[x86_64]=         X86_DRIVERS
26 OPT_ON[dragonfly]=      LLVMPIPE//i386|x86_64
27 OPT_ON[i386]=           X86_DRIVERS
28
29 BUILD_DEPENDS=          python-Mako:single:python_used
30                         libpthread-stubs:single:standard
31                         libelf:single:standard
32                         libvdpau:single:standard
33                         libva:single:standard
34 BUILDRUN_DEPENDS=       libdrm:single:standard
35 EXRUN[drivers]=         mesa:libs:standard
36                         libelf:single:standard
37
38 USES=                   cpe bison gettext-tools gmake meson pkgconfig zstd
39                         zlib expat shebangfix solaris-funcs python:build
40                         c++:libs,drivers
41 XORG_COMPONENTS=        x11 xdamage xext xfixes xshmfence xxf86vm xv xrandr
42                         xcb
43
44 LICENSE=                MIT:libs CUSTOM1:libs CUSTOM2:libs
45 LICENSE_NAME=           CUSTOM1:"Kronos License (MIT with modifications)"
46                         CUSTOM2:"SGI Free Software License B"
47 LICENSE_FILE=           MIT:{{WRKDIR}}/LICENSE_MIT
48                         CUSTOM1:{{WRKDIR}}/LICENSE_KHRONOS
49                         CUSTOM2:{{WRKDIR}}/LICENSE_SGI
50 LICENSE_AWK=            MIT:"^$$"
51                         CUSTOM2:"^$$"
52 LICENSE_SOURCE=         MIT:{{WRKSRC}}/include/GL/gl.h
53                         CUSTOM2:{{WRKSRC}}/src/glx/eval.c
54 LICENSE_SCHEME=         multi
55
56 CPE_VENDOR=             mesa3d
57 FPC_EQUIVALENT=         graphics/mesa-libs
58 MESON_ARGS=             -Dplatforms=x11{{WAYPLAT}}
59                         -Dzstd=enabled
60                         -Ddri3=true
61                         -Ddri-drivers={{DRI_DRIVERS:tW:tl:C/[[:space:]]/,/g}}
62                         -Dgallium-drivers={{GALLIUM_DRIVERS:tW:tl:C/[[:space:]]/,/g}}
63                         -Dgallium-vdpau=enabled
64                         -Dosmesa=true
65                         -Dlibunwind=false
66                         -Dgles1=disabled
67                         -Dvulkan-drivers={{VULKAN_DRIVERS:tW:tl:C/[[:space:]]/,/g}}
68 SHEBANG_FILES=          src/gallium/*/*/*.py
69                         src/gallium/tools/trace/*.py
70                         src/gallium/drivers/svga/svgadump/svga_dump.py
71                         src/mapi/glapi/gen/*.py
72                         src/mapi/mapi_abi.py
73                         src/mesa/main/get_*.py
74                         src/util/format_srgb.py
75                         src/amd/*/*.py
76                         src/intel/genxml/gen_pack_header.py
77 SHEBANG_OLD_PYTHON=     /usr/bin/env[[:space:]]python2
78                         /usr/bin/python2
79                         /bin/env[[:space:]]python
80 SOL_FUNCTIONS=          dirfd:src/util/disk_cache.c
81                         asprintf:src/util/anon_file.c
82                         asprintf:src/mesa/drivers/dri/common/megadriver_stub.c
83                         asprintf:src/loader/loader.c
84                         asprintf:src/egl/main/eglcurrent.c
85                         asprintf:src/util/u_string.h
86                         asprintf:src/amd/common/ac_rtld.c
87                         strnlen:src/util/ralloc.c
88                         strnlen:src/mesa/main/errors.c
89                         strndup:src/loader/loader.c
90                         strndup:src/egl/drivers/dri2/platform_x11.c
91                         strndup:src/gallium/drivers/r600/evergreen_compute.c
92                         strndup:src/gallium/drivers/radeonsi/si_debug.c
93
94 CONFIGURE_ENV=          ax_cv_check_cflags___Wno_initializer_overrides=no
95
96 INSTALL_TARGET=         install-strip
97 INSTALL_REQ_TOOLCHAIN=  yes
98
99 CFLAGS=                 -Wno-pointer-sign
100 VAR_OPSYS[sunos]=       CPPFLAGS=-D__EXTENSIONS__=1
101                         CPPFLAGS=-Wno-unused-function
102                         CXXFLAGS=-Drestrict=__restrict__
103                         CFLAGS=-D_POSIX_PTHREAD_SEMANTICS
104                         CFLAGS=-DF_DUPFD_CLOEXEC=F_DUPFD
105                         CFLAGS=-Wno-incompatible-pointer-types
106                         LDFLAGS=-lsocket
107                         LDFLAGS=-lnsl
108                         MAKEFILE_LINE=MESON_ARGS+=-Dshader-cache=false
109
110 [ARM_DRIVERS].DESCRIPTION=              Build drivers for aarch64 architecture
111 [ARM_DRIVERS].MAKEFILE_ON=              GALLIUM_DRIVERS+=FREEDRENO
112                                         GALLIUM_DRIVERS+=VC4
113
114 [X86_DRIVERS].DESCRIPTION=              Build drivers for i386 and x86_64 architectures
115 [X86_DRIVERS].MAKEFILE_ON=              DRI_DRIVERS+=R100
116                                         DRI_DRIVERS+=R200
117                                         DRI_DRIVERS+=I915
118                                         DRI_DRIVERS+=I965
119                                         GALLIUM_DRIVERS+=R300
120                                         GALLIUM_DRIVERS+=SVGA
121                                         VULKAN_DRIVERS+={{VULKAN_DRIVERS_X86}}
122
123 [WAYLAND].DESCRIPTION=                  Build Vulkan drivers for Wayland platform
124 [WAYLAND].BUILDRUN_DEPENDS_ON=          wayland:primary:standard
125 [WAYLAND].BUILD_DEPENDS_ON=             wayland-protocols:single:standard
126                                         python-Mako:single:python_default
127 [WAYLAND].MAKEFILE_ON=                  WAYPLAT=,wayland
128                                         VULKAN_DRIVERS+=INTEL
129                                         VULKAN_DRIVERS_X86+=RADEON
130
131 [LLVMPIPE].DESCRIPTION=                 Build LLVM-based drivers and libraries
132 [LLVMPIPE].BUILDRUN_DEPENDS_ON=         llvm:single:standard
133                                         ocl-icd:primary:standard
134 [LLVMPIPE].BUILD_DEPENDS_ON=            libclc:single:standard
135                                         opencl-headers:single:standard
136 [LLVMPIPE].MAKEFILE_OFF=                MESON_ARGS+=-Dgallium-opencl=disabled
137 [LLVMPIPE].MAKEFILE_ON=                 GALLIUM_LLVM_DRIVERS+=R600
138                                         GALLIUM_LLVM_DRIVERS+=RADEONSI
139                                         GALLIUM_DRIVERS+={{GALLIUM_LLVM_DRIVERS}}
140                                         MESON_ARGS+=-Dllvm=true
141                                         MESON_ARGS+=-Dgallium-xvmc=enabled
142                                         MESON_ARGS+=-Dgallium-va=enabled
143                                         MESON_ARGS+=-Dgallium-opencl=icd
144 [LLVMPIPE].RUN_DEPENDS_ON=              clang:dynlibs:standard
145 [LLVMPIPE].USES_ON=                     clang:keepcc
146 [LLVMPIPE].XORG_COMPONENTS_ON=          xvmc
147
148 post-patch:
149         ${REINPLACE_CMD} -e 's|/etc/|${PREFIX}/etc/|g' \
150                 ${WRKSRC}/src/util/xmlconfig.c
151
152 post-extract:
153         ${AWK} '/Copyright/,/DEALINGS/' ${WRKSRC}/include/GL/glext.h \
154                 > ${WRKDIR}/LICENSE_KHRONOS
155
156 [FILE:1198:descriptions/desc.libs]
157 The Mesa project began as an open-source implementation of the OpenGL
158 specification - a system for rendering interactive 3D graphics.
159
160 Over the years the project has grown to implement more graphics APIs,
161 including OpenGL ES (versions 1, 2, 3), OpenCL, OpenMAX, VDPAU, VA API,
162 XvMC and Vulkan.
163
164 A variety of device drivers allows the Mesa libraries to be used in many
165 different environments ranging from software emulation to complete
166 hardware acceleration for modern GPUs.
167
168 Mesa ties into several other open-source projects: the Direct Rendering
169 Infrastructure and X.org to provide OpenGL support on Linux, FreeBSD
170 and other operating systems.
171
172 This package contains the Mesa OpenGL libraries for GLX and EGL clients.
173 These include libOSMesa, libEGL, libGL, and libglesv2 as well as utility
174 libraries libglapi and gbm.  The OSMesa library is an Off-Screen version
175 of Mesa in order to do off-screen rendering in other packages like VTK.
176 Offscreen rendering is useful for a number of things, such as batch
177 processing, parallel processing, and remote processing.
178
179 This package also contains Mesa's libOpenCL implementation "Clover".  It is
180 built upon GALLIUM and currently only supports Radeon GPUs.
181
182
183 [FILE:162:descriptions/desc.drivers]
184 This package contains the Mesa OpenGL libraries for GLX and EGL clients.
185 These include libEGL, libGL, and libglesv2 as well as utlity libraries
186 libglapi and gbm.
187
188
189 [FILE:97:distinfo]
190 c4aaf1bf974217ed825e1c536de6ab72a4e266d44bcf69fc4ec499039f99e5c4     15755212 mesa-21.2.2.tar.xz
191
192
193 [FILE:981:manifests/plist.libs]
194 %%LLVMPIPE-ON%%etc/OpenCL/vendors/mesa.icd
195 %%LLVMPIPE-ON%%lib/
196  libMesaOpenCL.so
197  libMesaOpenCL.so.1
198  libMesaOpenCL.so.1.0.0
199 %%LLVMPIPE-ON%%lib/gallium-pipe/
200  pipe_r300.so
201  pipe_r600.so
202  pipe_radeonsi.so
203  pipe_swrast.so
204  pipe_vmwgfx.so
205 include/
206  gbm.h
207  xa_composite.h
208  xa_context.h
209  xa_tracker.h
210 include/EGL/
211  egl.h
212  eglext.h
213  eglextchromium.h
214  eglmesaext.h
215  eglplatform.h
216 include/GL/
217  gl.h
218  glcorearb.h
219  glext.h
220  glx.h
221  glxext.h
222  osmesa.h
223 include/GLES2/
224  gl2.h
225  gl2ext.h
226  gl2platform.h
227 include/GLES3/
228  gl3.h
229  gl31.h
230  gl32.h
231  gl3ext.h
232  gl3platform.h
233 include/KHR/khrplatform.h
234 lib/
235  libEGL.so
236  libEGL.so.1
237  libEGL.so.1.0.0
238  libGL.so
239  libGL.so.1
240  libGL.so.1.2.0
241  libGLESv2.so
242  libGLESv2.so.2
243  libGLESv2.so.2.0.0
244  libOSMesa.so
245  libOSMesa.so.8
246  libOSMesa.so.8.0.0
247  libgbm.so
248  libgbm.so.1
249  libgbm.so.1.0.0
250  libglapi.so
251  libglapi.so.0
252  libglapi.so.0.0.0
253  libxatracker.so
254  libxatracker.so.2
255  libxatracker.so.2.5.0
256 lib/pkgconfig/
257  egl.pc
258  gbm.pc
259  gl.pc
260  glesv2.pc
261  osmesa.pc
262  xatracker.pc
263
264
265 [FILE:837:manifests/plist.drivers]
266 %%ARM_DRIVERS-ON%%lib/dri/
267  kgsl_dri.so
268  msm_dri.so
269  vc4_dri.so
270 %%LLVMPIPE-ON%%lib/
271  libXvMCr600.so
272  libXvMCr600.so.1
273  libXvMCr600.so.1.0
274  libXvMCr600.so.1.0.0
275 %%LLVMPIPE-ON%%lib/dri/
276  r600_dri.so
277  r600_drv_video.so
278  radeonsi_dri.so
279  radeonsi_drv_video.so
280 %%LLVMPIPE-ON%%lib/vdpau/
281  libvdpau_r600.so
282  libvdpau_r600.so.1
283  libvdpau_r600.so.1.0
284  libvdpau_r600.so.1.0.0
285  libvdpau_radeonsi.so
286  libvdpau_radeonsi.so.1
287  libvdpau_radeonsi.so.1.0
288  libvdpau_radeonsi.so.1.0.0
289 %%X86_DRIVERS-ON%%lib/dri/
290  i830_dri.so
291  i915_dri.so
292  i965_dri.so
293  r200_dri.so
294  r300_dri.so
295  radeon_dri.so
296  vmwgfx_dri.so
297 %%X86_DRIVERS-ON%%lib/vdpau/
298  libvdpau_r300.so
299  libvdpau_r300.so.1
300  libvdpau_r300.so.1.0
301  libvdpau_r300.so.1.0.0
302 include/GL/internal/dri_interface.h
303 lib/dri/
304  kms_swrast_dri.so
305  swrast_dri.so
306 lib/pkgconfig/dri.pc
307 share/drirc.d/00-mesa-defaults.conf
308
309
310 [FILE:511:patches/patch-include_GL_internal_dri__interface.h]
311 GCC on 9.x doesn't allow types to be overwritten, these types are defined
312 in drm.h also, which causes build issues in xorg-server.
313
314 --- include/GL/internal/dri_interface.h.orig    2021-09-21 16:54:05 UTC
315 +++ include/GL/internal/dri_interface.h
316 @@ -40,13 +40,7 @@
317  #ifndef DRI_INTERFACE_H
318  #define DRI_INTERFACE_H
319  
320 -#ifdef HAVE_LIBDRM
321  #include <drm.h>
322 -#else
323 -typedef unsigned int drm_context_t;
324 -typedef unsigned int drm_drawable_t;
325 -typedef struct drm_clip_rect drm_clip_rect_t;
326 -#endif
327  
328  #include <GL/gl.h>
329  
330
331
332 [FILE:227:patches/patch-src_amd_llvm_ac__llvm__build.h]
333 --- src/amd/llvm/ac_llvm_build.h.orig   2021-09-21 16:54:05 UTC
334 +++ src/amd/llvm/ac_llvm_build.h
335 @@ -35,6 +35,10 @@
336  
337  #include <stdbool.h>
338  
339 +#ifdef __sun
340 +#include <alloca.h>
341 +#endif
342 +
343  #ifdef __cplusplus
344  extern "C" {
345  #endif
346
347
348 [FILE:505:patches/patch-src_amd_vulkan_radv__device.c]
349 - Define CLOCK_MONOTONIC_RAW if missing
350
351 --- src/amd/vulkan/radv_device.c.orig   2021-09-21 16:54:05 UTC
352 +++ src/amd/vulkan/radv_device.c
353 @@ -106,6 +106,14 @@ radv_get_absolute_timeout(uint64_t timeo
354     return current_time + timeout;
355  }
356  
357 +#ifndef CLOCK_MONOTONIC_RAW
358 +# ifdef CLOCK_MONOTONIC_FAST
359 +#  define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC_FAST
360 +# else
361 +#  define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC
362 +# endif
363 +#endif
364 +
365  static int
366  radv_device_get_cache_uuid(enum radeon_family family, void *uuid)
367  {
368
369
370 [FILE:354:patches/patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c]
371 - Define ETIME if missing
372
373 --- src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c.orig  2021-09-21 16:54:05 UTC
374 +++ src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
375 @@ -41,6 +41,10 @@
376  
377  enum { VIRTUAL_BUFFER_HASH_TABLE_SIZE = 1024 };
378  
379 +#ifndef ETIME
380 +#define ETIME ETIMEDOUT
381 +#endif
382 +
383  struct radv_amdgpu_ib {
384     struct radeon_winsys_bo *bo;
385     unsigned cdw;
386
387
388 [FILE:555:patches/patch-src_egl_drivers_dri2_egl__dri2.c]
389 --- src/egl/drivers/dri2/egl_dri2.c.orig        2021-09-21 16:54:06 UTC
390 +++ src/egl/drivers/dri2/egl_dri2.c
391 @@ -989,11 +989,13 @@ dri2_setup_screen(_EGLDisplay *disp)
392               disp->Extensions.KHR_gl_texture_3D_image = EGL_TRUE;
393        }
394  #ifdef HAVE_LIBDRM
395 +# ifndef __DragonFly__
396        if (dri2_dpy->image->base.version >= 8 &&
397            dri2_dpy->image->createImageFromDmaBufs) {
398           disp->Extensions.EXT_image_dma_buf_import = EGL_TRUE;
399           disp->Extensions.EXT_image_dma_buf_import_modifiers = EGL_TRUE;
400        }
401 +# endif
402  #endif
403     }
404  
405
406
407 [FILE:790:patches/patch-src_egl_drivers_dri2_platform__wayland.c]
408 --- src/egl/drivers/dri2/platform_wayland.c.orig        2021-09-21 16:54:06 UTC
409 +++ src/egl/drivers/dri2/platform_wayland.c
410 @@ -1330,6 +1330,7 @@ registry_handle_global_drm(void *data, s
411        dri2_dpy->wl_drm =
412           wl_registry_bind(registry, name, &wl_drm_interface, MIN2(version, 2));
413        wl_drm_add_listener(dri2_dpy->wl_drm, &drm_listener, dri2_dpy);
414 +#ifndef __DragonFly__
415     } else if (strcmp(interface, "zwp_linux_dmabuf_v1") == 0 && version >= 3) {
416        dri2_dpy->wl_dmabuf =
417           wl_registry_bind(registry, name, &zwp_linux_dmabuf_v1_interface,
418 @@ -1337,6 +1338,7 @@ registry_handle_global_drm(void *data, s
419        zwp_linux_dmabuf_v1_add_listener(dri2_dpy->wl_dmabuf, &dmabuf_listener,
420                                         dri2_dpy);
421     }
422 +#endif
423  }
424  
425  static void
426
427
428 [FILE:352:patches/patch-src_egl_main_eglglobals.c]
429 --- src/egl/main/eglglobals.c.orig      2021-09-21 16:54:06 UTC
430 +++ src/egl/main/eglglobals.c
431 @@ -138,7 +138,7 @@ _eglPointerIsDereferencable(void *p)
432  {
433     uintptr_t addr = (uintptr_t) p;
434     const long page_size = getpagesize();
435 -#ifdef HAVE_MINCORE
436 +#if defined(HAVE_MINCORE) && !defined(__DragonFly__)
437     unsigned char valid = 0;
438  
439     if (p == NULL)
440
441
442 [FILE:3256:patches/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c]
443 Revert the following commit.
444
445 FreeBSD and DragonFly don't have the required render nodes.
446
447 -------
448
449 From 69a1b9959e59653da262185c4e2cf57d24939b19 Mon Sep 17 00:00:00 2001
450 From: Emil Velikov <emil.l.velikov@gmail.com>
451 Date: Mon, 29 Jun 2015 12:36:45 +0100
452 Subject: pipe-loader: drop support for non-render node devices
453
454 Render nodes have been around for quite some time. Removing support via
455 the master/primary node allows us to clean up the conditional
456 compilation and simplify the build greatly.
457
458 For example currently we the pipe-loader, which explicitly links against
459 xcb and friends (for X auth) if found at compile-time. That
460 would cause problems as one will be forced to use X/xcb, even if it's a
461 headless system that is used for opencl.
462
463 v2: Clarify the linking topic in the commit message.
464
465 Cc: Tom Stellard <thomas.stellard@amd.com>
466 Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
467 Reviewed-by: Francisco Jerez <currojerez@riseup.net>
468
469
470 --- src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c.orig    2021-09-21 16:54:06 UTC
471 +++ src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
472 @@ -198,6 +198,14 @@ pipe_loader_drm_probe_fd(struct pipe_loa
473  }
474  
475  static int
476 +open_drm_minor(int minor)
477 +{
478 +   char path[PATH_MAX];
479 +   snprintf(path, sizeof(path), DRM_DEV_NAME, DRM_DIR_NAME, minor);
480 +   return open(path, O_RDWR, 0);
481 +}
482 +
483 +static int
484  open_drm_render_node_minor(int minor)
485  {
486     char path[PATH_MAX];
487 @@ -209,8 +217,15 @@ open_drm_render_node_minor(int minor)
488  int
489  pipe_loader_drm_probe(struct pipe_loader_device **devs, int ndev)
490  {
491 -   int i, j, fd;
492 +   int i, k, fd, num_render_node_devs;
493 +   int j = 0;
494 +
495 +   struct {
496 +      unsigned vendor_id;
497 +      unsigned chip_id;
498 +   } render_node_devs[DRM_RENDER_NODE_MAX_NODES];
499  
500 +   /* Look for render nodes first */
501     for (i = DRM_RENDER_NODE_MIN_MINOR, j = 0;
502          i <= DRM_RENDER_NODE_MAX_MINOR; i++) {
503        struct pipe_loader_device *dev;
504 @@ -224,6 +239,9 @@ pipe_loader_drm_probe(struct pipe_loader
505           continue;
506        }
507  
508 +      render_node_devs[j].vendor_id = dev->u.pci.vendor_id;
509 +      render_node_devs[j].chip_id = dev->u.pci.chip_id;
510 +
511        if (j < ndev) {
512           devs[j] = dev;
513        } else {
514 @@ -233,6 +251,46 @@ pipe_loader_drm_probe(struct pipe_loader
515        j++;
516     }
517  
518 +   num_render_node_devs = j;
519 +
520 +   /* Next look for drm devices. */
521 +   for (i = 0; i < DRM_MAX_MINOR; i++) {
522 +      struct pipe_loader_device *dev;
523 +      boolean duplicate = FALSE;
524 +      fd = open_drm_minor(i);
525 +      if (fd < 0)
526 +         continue;
527 +
528 +      if (!pipe_loader_drm_probe_fd(&dev, fd)) {
529 +         close(fd);
530 +         continue;
531 +      }
532 +
533 +      /* Check to make sure we aren't already accessing this device via
534 +       * render nodes.
535 +       */
536 +      for (k = 0; k < num_render_node_devs; k++) {
537 +         if (dev->u.pci.vendor_id == render_node_devs[k].vendor_id &&
538 +             dev->u.pci.chip_id == render_node_devs[k].chip_id) {
539 +            close(fd);
540 +            dev->ops->release(&dev);
541 +            duplicate = TRUE;
542 +            break;
543 +         }
544 +      }
545 +
546 +      if (duplicate)
547 +         continue;
548 +
549 +      if (j < ndev) {
550 +         devs[j] = dev;
551 +      } else {
552 +         dev->ops->release(&dev);
553 +      }
554 +
555 +      j++;
556 +   }
557 +
558     return j;
559  }
560  
561
562
563 [FILE:271:patches/patch-src_gallium_auxiliary_rbug_rbug__texture.c]
564 --- src/gallium/auxiliary/rbug/rbug_texture.c.orig      2021-09-21 16:54:06 UTC
565 +++ src/gallium/auxiliary/rbug/rbug_texture.c
566 @@ -36,6 +36,10 @@
567  
568  #include "c99_alloca.h"
569  
570 +#ifdef __sun
571 +#include <alloca.h>
572 +#endif
573 +
574  #include "rbug_internal.h"
575  #include "rbug_texture.h"
576  
577
578
579 [FILE:357:patches/patch-src_gallium_auxiliary_renderonly_renderonly.c]
580 --- src/gallium/auxiliary/renderonly/renderonly.c.orig  2021-09-21 16:54:06 UTC
581 +++ src/gallium/auxiliary/renderonly/renderonly.c
582 @@ -37,6 +37,10 @@
583  #include "util/u_inlines.h"
584  #include "util/u_memory.h"
585  
586 +#ifndef O_CLOEXEC
587 +#define O_CLOEXEC 0
588 +#endif
589 +
590  void
591  renderonly_scanout_destroy(struct renderonly_scanout *scanout,
592                            struct renderonly *ro)
593
594
595 [FILE:544:patches/patch-src_gallium_drivers_radeonsi_si__state__shaders.c]
596 --- src/gallium/drivers/radeonsi/si_state_shaders.c.orig        2021-09-21 16:54:06 UTC
597 +++ src/gallium/drivers/radeonsi/si_state_shaders.c
598 @@ -2138,6 +2138,7 @@ static void si_build_shader_variant(stru
599        return;
600     }
601  
602 +#ifndef __sun
603     if (shader->compiler_ctx_state.is_debug_context) {
604        FILE *f = open_memstream(&shader->shader_log, &shader->shader_log_size);
605        if (f) {
606 @@ -2145,6 +2146,7 @@ static void si_build_shader_variant(stru
607           fclose(f);
608        }
609     }
610 +#endif
611  
612     si_shader_init_pm4_state(sscreen, shader);
613  }
614
615
616 [FILE:360:patches/patch-src_gallium_drivers_vc4_vc4__bufmgr.c]
617 # define ETIME as ETIMEOUT same as in intel driver
618 #
619 --- src/gallium/drivers/vc4/vc4_bufmgr.c.orig   2021-09-21 16:54:06 UTC
620 +++ src/gallium/drivers/vc4/vc4_bufmgr.c
621 @@ -27,6 +27,9 @@
622  #include <fcntl.h>
623  #include <xf86drm.h>
624  #include <xf86drmMode.h>
625 +#ifndef ETIME
626 +#define ETIME ETIMEDOUT
627 +#endif
628  
629  #include "util/u_hash_table.h"
630  #include "util/u_memory.h"
631
632
633 [FILE:271:patches/patch-src_gallium_winsys_amdgpu_drm_amdgpu__cs.c]
634 --- src/gallium/winsys/amdgpu/drm/amdgpu_cs.c.orig      2021-09-21 16:54:06 UTC
635 +++ src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
636 @@ -33,6 +33,10 @@
637  
638  #include "amd/common/sid.h"
639  
640 +#ifdef __sun__
641 +#include <alloca.h>
642 +#endif
643 +
644  /* FENCES */
645  
646  static struct pipe_fence_handle *
647
648
649 [FILE:575:patches/patch-src_glx_glxext.c]
650 # work-around for https://bugs.freedesktop.org/show_bug.cgi?id=100627
651 #
652 --- src/glx/glxext.c.orig       2021-09-21 16:54:06 UTC
653 +++ src/glx/glxext.c
654 @@ -933,6 +933,9 @@ __glXInitialize(Display * dpy)
655  #if defined(GLX_USE_DRM)
656     if (glx_direct && glx_accel) {
657  #if defined(HAVE_DRI3)
658 +#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && !defined(__DRM_NEXT__)
659 +      if (env_var_as_boolean("LIBGL_DRI3_ENABLE", false))
660 +#endif
661        if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false))
662           dpyPriv->dri3Display = dri3_create_display(dpy);
663  #endif /* HAVE_DRI3 */
664
665
666 [FILE:318:patches/patch-src_glx_meson.build]
667 --- src/glx/meson.build.orig    2021-09-21 16:54:06 UTC
668 +++ src/glx/meson.build
669 @@ -135,7 +135,7 @@ libglx = static_library(
670      extra_libs_libglx,
671    ],
672    dependencies : [
673 -    idep_mesautil, idep_xmlconfig,
674 +    idep_xmlconfig, idep_mesautil,
675      dep_libdrm, dep_dri2proto, dep_glproto, dep_x11, dep_glvnd,
676    ],
677  )
678
679
680 [FILE:1012:patches/patch-src_intel_common_intel__measure.c]
681 --- src/intel/common/intel_measure.c.orig       2021-09-21 16:54:06 UTC
682 +++ src/intel/common/intel_measure.c
683 @@ -42,6 +42,46 @@
684  #include "util/macros.h"
685  #include "util/u_debug.h"
686  
687 +#ifdef __sun
688 +static int
689 +mkfifoat(int fd, const char *path, mode_t mode)
690 +{
691 +       int     er, curfd = -1, newfd = -1;
692 +
693 +       /* Get our current directory then switch to the given one. */
694 +
695 +       if (fd != AT_FDCWD) {
696 +               if ((curfd = open(".", O_RDONLY, 0)) == -1)
697 +                       return -1;
698 +               if (fchdir(fd) == -1)
699 +                       goto out;
700 +       }
701 +
702 +       if ((newfd = mkfifo(path, mode)) == -1)
703 +               goto out;
704 +
705 +       /* This leaves the fifo if it fails. */
706 +
707 +       if (curfd != -1 && fchdir(curfd) == -1)
708 +               goto out;
709 +       if (curfd != -1)
710 +               close(curfd);
711 +
712 +       return newfd;
713 +out:
714 +       /* Ignore errors in close(2). */
715 +
716 +       er = errno;
717 +       if (curfd != -1)
718 +               fchdir(curfd);
719 +       if (curfd != -1)
720 +               close(curfd);
721 +       if (newfd != -1)
722 +               close(newfd);
723 +       errno = er;
724 +       return -1;
725 +}
726 +#endif
727  
728  static const struct debug_control debug_control[] = {
729     { "draw",            INTEL_MEASURE_DRAW       },
730
731
732 [FILE:1014:patches/patch-src_intel_compiler_brw__eu__validate.c]
733 --- src/intel/compiler/brw_eu_validate.c.orig   2021-09-21 16:54:06 UTC
734 +++ src/intel/compiler/brw_eu_validate.c
735 @@ -41,6 +41,39 @@
736  #include <stdlib.h>
737  #include "brw_eu.h"
738  
739 +#ifdef __sun__
740 +#include <string.h>
741 +
742 +static void *
743 +memmem(const void *l, size_t l_len, const void *s, size_t s_len)
744 +{
745 +       char *cur, *last;
746 +       const char *cl = (const char *)l;
747 +       const char *cs = (const char *)s;
748 +
749 +       /* we need something to compare */
750 +       if (l_len == 0 || s_len == 0)
751 +               return NULL;
752 +
753 +       /* "s" must be smaller or equal to "l" */
754 +       if (l_len < s_len)
755 +               return NULL;
756 +
757 +       /* special case where s_len == 1 */
758 +       if (s_len == 1)
759 +               return memchr(l, (int)*cs, l_len);
760 +
761 +       /* the last position where its possible to find "s" in "l" */
762 +       last = (char *)cl + l_len - s_len;
763 +
764 +       for (cur = (char *)cl; cur <= last; cur++)
765 +               if (cur[0] == cs[0] && memcmp(cur, cs, s_len) == 0)
766 +                       return cur;
767 +
768 +       return NULL;
769 +}
770 +#endif
771 +
772  /* We're going to do lots of string concatenation, so this should help. */
773  struct string {
774     char *str;
775
776
777 [FILE:954:patches/patch-src_intel_compiler_brw__fs__bank__conflicts.cpp]
778 --- src/intel/compiler/brw_fs_bank_conflicts.cpp.orig   2021-09-21 16:54:06 UTC
779 +++ src/intel/compiler/brw_fs_bank_conflicts.cpp
780 @@ -309,8 +309,13 @@ namespace {
781           const unsigned align = MAX2(sizeof(void *), __alignof__(vector_type));
782           const unsigned size = DIV_ROUND_UP(n, vector_width) * sizeof(vector_type);
783           void *p;
784 +#ifdef __sun
785 +       p = memalign(align, size);
786 +       if (p == NULL) return NULL;
787 +#else
788           if (posix_memalign(&p, align, size))
789              return NULL;
790 +#endif
791           memset(p, 0, size);
792           return reinterpret_cast<vector_type *>(p);
793        }
794 @@ -737,7 +742,7 @@ namespace {
795                     const weight_vector_type &conflicts)
796     {
797        const unsigned m = DIV_ROUND_UP(conflicts.size, vector_width);
798 -      vector_type s_p = {}, s_n = {};
799 +      vector_type s_p = {0}, s_n = {0};
800  
801        for (unsigned r = 0; r < m; r++) {
802           s_p = adds(s_p, mask(bank_mask_p.v[r], conflicts.v[r]));
803
804
805 [FILE:234:patches/patch-src_intel_isl_isl.h]
806 --- src/intel/isl/isl.h.orig    2021-09-21 16:54:06 UTC
807 +++ src/intel/isl/isl.h
808 @@ -48,6 +48,9 @@
809  #include "util/format/u_format.h"
810  
811  #ifdef __cplusplus
812 +# ifdef __sun__
813 +# define restrict      __restrict__
814 +# endif
815  extern "C" {
816  #endif
817  
818
819
820 [FILE:302:patches/patch-src_intel_tools_aubinator__error__decode.c]
821 # expose getline in FreeBSD's stdio.h
822 #
823 --- src/intel/tools/aubinator_error_decode.c.orig       2021-09-21 16:54:06 UTC
824 +++ src/intel/tools/aubinator_error_decode.c
825 @@ -22,6 +22,9 @@
826   *
827   */
828  
829 +#ifdef __FreeBSD__
830 +#define _WITH_GETLINE
831 +#endif
832  #include <stdbool.h>
833  #include <stdio.h>
834  #include <stdlib.h>
835
836
837 [FILE:238:patches/patch-src_intel_tools_error2aub.c]
838 --- src/intel/tools/error2aub.c.orig    2021-09-21 16:54:06 UTC
839 +++ src/intel/tools/error2aub.c
840 @@ -22,6 +22,9 @@
841   *
842   */
843  
844 +#ifdef __FreeBSD__
845 +#define _WITH_GETLINE
846 +#endif
847  #include <assert.h>
848  #include <getopt.h>
849  #include <inttypes.h>
850
851
852 [FILE:936:patches/patch-src_mesa_drivers_dri_i965_brw__bufmgr.c]
853 --- src/mesa/drivers/dri/i965/brw_bufmgr.c.orig 2021-09-21 16:54:06 UTC
854 +++ src/mesa/drivers/dri/i965/brw_bufmgr.c
855 @@ -85,6 +85,10 @@
856  } while (0)
857  
858  
859 +#ifndef O_CLOEXEC
860 +#define O_CLOEXEC      0
861 +#endif
862 +
863  /* VALGRIND_FREELIKE_BLOCK unfortunately does not actually undo the earlier
864   * VALGRIND_MALLOCLIKE_BLOCK but instead leaves vg convinced the memory is
865   * leaked. All because it does not call VG(cli_free) from its
866 @@ -1891,8 +1895,12 @@ brw_bufmgr_create(struct intel_device_in
867        bufmgr->initial_kflags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
868  
869        /* Allocate VMA in userspace if we have softpin and full PPGTT. */
870 +#ifdef __DragonFly__
871 +      if (false) {
872 +#else
873        if (gem_param(fd, I915_PARAM_HAS_EXEC_SOFTPIN) > 0 &&
874            gem_param(fd, I915_PARAM_HAS_ALIASING_PPGTT) > 1) {
875 +#endif
876           bufmgr->initial_kflags |= EXEC_OBJECT_PINNED;
877  
878           util_vma_heap_init(&bufmgr->vma_allocator[BRW_MEMZONE_LOW_4G],
879
880
881 [FILE:712:patches/patch-src_mesa_drivers_dri_i965_brw__disk__cache.c]
882 --- src/mesa/drivers/dri/i965/brw_disk_cache.c.orig     2021-09-21 16:54:06 UTC
883 +++ src/mesa/drivers/dri/i965/brw_disk_cache.c
884 @@ -394,6 +394,7 @@ brw_disk_cache_init(struct brw_screen *s
885     if (INTEL_DEBUG & DEBUG_DISK_CACHE_DISABLE_MASK)
886        return;
887  
888 +# ifdef HAVE_DL_ITERATE_PHDR
889     /* array length: print length + null char + 1 extra to verify it is unused */
890     char renderer[11];
891     ASSERTED int len = snprintf(renderer, sizeof(renderer), "i965_%04x",
892 @@ -413,5 +414,6 @@ brw_disk_cache_init(struct brw_screen *s
893     const uint64_t driver_flags =
894        brw_get_compiler_config_value(screen->compiler);
895     screen->disk_cache = disk_cache_create(renderer, timestamp, driver_flags);
896 +# endif
897  #endif
898  }
899
900
901 [FILE:851:patches/patch-src_mesa_drivers_dri_i965_brw__program__binary.c]
902 --- src/mesa/drivers/dri/i965/brw_program_binary.c.orig 2021-09-21 16:54:06 UTC
903 +++ src/mesa/drivers/dri/i965/brw_program_binary.c
904 @@ -36,9 +36,11 @@ static uint8_t driver_sha1[20];
905  void
906  brw_program_binary_init(unsigned device_id)
907  {
908 +#ifdef HAVE_DL_ITERATE_PHDR
909     const struct build_id_note *note =
910        build_id_find_nhdr_for_addr(brw_program_binary_init);
911     assert(note);
912 +#endif
913  
914     /**
915      * With Mesa's megadrivers, taking the sha1 of i965_dri.so may not be
916 @@ -52,7 +54,9 @@ brw_program_binary_init(unsigned device_
917     int len = snprintf(renderer, sizeof(renderer), "i965_%04x", device_id);
918     assert(len == sizeof(renderer) - 1);
919     _mesa_sha1_update(&ctx, renderer, len);
920 +#ifdef HAVE_DL_ITERATE_PHDR
921     _mesa_sha1_update(&ctx, build_id_data(note), build_id_length(note));
922 +#endif
923     _mesa_sha1_final(&ctx, driver_sha1);
924  }
925  
926
927
928 [FILE:328:patches/patch-src_util_build__id.c]
929 # Elf_ doesn't exist, use Elf32_ or Elf64_
930 #
931 --- src/util/build_id.c.orig    2021-09-21 16:54:06 UTC
932 +++ src/util/build_id.c
933 @@ -35,7 +35,11 @@
934  #endif
935  
936  #ifndef ElfW
937 -#define ElfW(type) Elf_##type
938 +#ifdef __LP64__
939 +#define ElfW(type) Elf64_##type
940 +#else
941 +#define ElfW(type) Elf32_##type
942 +#endif
943  #endif
944  
945  struct build_id_note {
946
947
948 [FILE:422:patches/patch-src_util_compiler.h]
949 --- src/util/compiler.h.orig    2021-09-21 16:54:06 UTC
950 +++ src/util/compiler.h
951 @@ -51,6 +51,9 @@
952  #if defined(__linux__)
953  #include <byteswap.h>
954  #define CPU_TO_LE32( x )       bswap_32( x )
955 +#elif defined(__FreeBSD__) || defined(__DragonFly__)
956 +#include <sys/endian.h>
957 +#define CPU_TO_LE32( x )       bswap32( x )
958  #elif defined(__APPLE__)
959  #include <CoreFoundation/CFByteOrder.h>
960  #define CPU_TO_LE32( x )       CFSwapInt32HostToLittle( x )
961
962
963 [FILE:1512:patches/patch-src_util_futex.h]
964 - Implement futex_wake() and futex_wait() via _umtx_op()
965
966 --- src/util/futex.h.orig       2021-09-21 16:54:06 UTC
967 +++ src/util/futex.h
968 @@ -30,10 +30,35 @@
969  #include <limits.h>
970  #include <stdint.h>
971  #include <unistd.h>
972 +#if defined(__FreeBSD__)
973 +#include <errno.h>
974 +# if __FreeBSD__ < 11
975 +#  include <machine/atomic.h>
976 +# endif
977 +#include <sys/umtx.h>
978 +#else
979  #include <linux/futex.h>
980  #include <sys/syscall.h>
981 +#endif
982  #include <sys/time.h>
983  
984 +#if defined(__FreeBSD__)
985 +static inline int futex_wake(uint32_t *addr, int count)
986 +{
987 +   return _umtx_op(addr, UMTX_OP_WAKE, (uint32_t)count, NULL, NULL) == -1 ? errno : 0;
988 +}
989 +
990 +static inline int futex_wait(uint32_t *addr, int32_t value, struct timespec *timeout)
991 +{
992 +   void *uaddr = NULL, *uaddr2 = NULL;
993 +   if (timeout != NULL) {
994 +      const struct _umtx_time tmo = { ._timeout = *timeout, ._flags = UMTX_ABSTIME, ._clockid = CLOCK_MONOTONIC };
995 +      uaddr = (void *)(uintptr_t)sizeof(tmo);
996 +      uaddr2 = (void *)&tmo;
997 +   }
998 +   return _umtx_op(addr, UMTX_OP_WAIT_UINT, (uint32_t)value, uaddr, uaddr2) == -1 ? errno : 0;
999 +}
1000 +#else
1001  static inline long sys_futex(void *addr1, int op, int val1, const struct timespec *timeout, void *addr2, int val3)
1002  {
1003     return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3);
1004 @@ -51,6 +76,7 @@ static inline int futex_wait(uint32_t *a
1005     return sys_futex(addr, FUTEX_WAIT_BITSET, value, timeout, NULL,
1006                      FUTEX_BITSET_MATCH_ANY);
1007  }
1008 +#endif
1009  
1010  #elif defined(__FreeBSD__)
1011  #define UTIL_FUTEX_SUPPORTED 1
1012
1013
1014 [FILE:239:patches/patch-src_util_libsync.h]
1015 --- src/util/libsync.h.orig     2021-09-21 16:54:06 UTC
1016 +++ src/util/libsync.h
1017 @@ -37,6 +37,10 @@
1018  #include <sys/poll.h>
1019  #include <unistd.h>
1020  
1021 +#ifdef __sun__
1022 +#include <sys/ioccom.h>
1023 +#endif
1024 +
1025  #if defined(__cplusplus)
1026  extern "C" {
1027  #endif
1028
1029
1030 [FILE:310:patches/patch-src_util_memstream.c]
1031 --- src/util/memstream.c.orig   2021-09-21 16:54:06 UTC
1032 +++ src/util/memstream.c
1033 @@ -51,7 +51,7 @@ u_memstream_open(struct u_memstream *mem
1034     }
1035  
1036     return success;
1037 -#elif defined(__APPLE__)
1038 +#elif defined(__APPLE__) || defined(__sun)
1039     return false;
1040  #else
1041     FILE *const f = open_memstream(bufp, sizep);
1042
1043
1044 [FILE:230:patches/patch-src_util_os__file.c]
1045 --- src/util/os_file.c.orig     2021-09-21 16:54:06 UTC
1046 +++ src/util/os_file.c
1047 @@ -25,6 +25,9 @@
1048  #endif
1049  #endif
1050  
1051 +#ifndef ENODATA
1052 +#define ENODATA ENOATTR
1053 +#endif
1054  
1055  FILE *
1056  os_file_create_unique(const char *filename, int filemode)
1057
1058
1059 [FILE:592:patches/patch-src_util_os__memory__aligned.h]
1060 --- src/util/os_memory_aligned.h.orig   2021-09-21 16:54:06 UTC
1061 +++ src/util/os_memory_aligned.h
1062 @@ -53,11 +53,16 @@ add_overflow_size_t(size_t a, size_t b,
1063  static inline void *
1064  os_malloc_aligned(size_t size, size_t alignment)
1065  {
1066 +#ifdef __sun__
1067 +   alignment = (alignment + sizeof(void*) - 1) & ~(sizeof(void*) - 1);
1068 +   return memalign(alignment, size);
1069 +#else
1070     void *ptr;
1071     alignment = (alignment + sizeof(void*) - 1) & ~(sizeof(void*) - 1);
1072     if(posix_memalign(&ptr, alignment, size) != 0)
1073        return NULL;
1074     return ptr;
1075 +#endif
1076  }
1077  
1078  #define os_free_aligned(_ptr) free(_ptr)
1079
1080
1081 [FILE:853:patches/patch-src_util_strndup.h]
1082 --- src/util/strndup.h.orig     2021-09-21 16:54:06 UTC
1083 +++ src/util/strndup.h
1084 @@ -24,7 +24,7 @@
1085  #ifndef STRNDUP_H
1086  #define STRNDUP_H
1087  
1088 -#if defined(_WIN32)
1089 +#if defined(_WIN32) || defined(__sun)
1090  
1091  #include <stdlib.h> // size_t
1092  #include <string.h>
1093 @@ -34,6 +34,7 @@ extern "C" {
1094  #endif
1095  
1096  static inline char *
1097 +#if defined(_WIN32)
1098  strndup(const char *str, size_t max)
1099  {
1100     size_t n;
1101 @@ -50,6 +51,22 @@ strndup(const char *str, size_t max)
1102     memcpy(ptr, str, n);
1103     return ptr;
1104  }
1105 +#else  // version without strnlen
1106 +strndup(const char *str, size_t n)
1107 +{
1108 +    size_t len;
1109 +    char *copy;
1110 +
1111 +    len = strlen(str);
1112 +    if (len <= n)
1113 +        return (strdup(str));
1114 +    if ((copy = (char *)malloc(len + 1)) == NULL)
1115 +        return (NULL);
1116 +    memcpy(copy, str, len);
1117 +    copy[len] = '\0';
1118 +    return (copy);
1119 +}
1120 +#endif
1121  
1122  #ifdef __cplusplus
1123  }
1124
1125
1126 [FILE:430:patches/patch-src_util_u__atomic.h]
1127 --- src/util/u_atomic.h.orig    2021-09-21 16:54:06 UTC
1128 +++ src/util/u_atomic.h
1129 @@ -20,11 +20,7 @@
1130   * locally coded assembly, compiler intrinsic or ultimately a
1131   * mutex-based implementation.
1132   */
1133 -#if defined(__sun)
1134 -#define PIPE_ATOMIC_OS_SOLARIS
1135 -#elif defined(_MSC_VER)
1136 -#define PIPE_ATOMIC_MSVC_INTRINSIC
1137 -#elif defined(__GNUC__)
1138 +#if defined(__GNUC__)
1139  #define PIPE_ATOMIC_GCC_INTRINSIC
1140  #else
1141  #error "Unsupported platform"
1142
1143
1144 [FILE:188:patches/patch-src_util_u__math.h]
1145 --- src/util/u_math.h.orig      2021-09-21 16:54:06 UTC
1146 +++ src/util/u_math.h
1147 @@ -51,6 +51,7 @@
1148  extern "C" {
1149  #endif
1150  
1151 +#undef ALIGN
1152  
1153  #ifndef M_SQRT2
1154  #define M_SQRT2 1.41421356237309504880
1155
1156
1157 [FILE:1523:patches/patch-src_util_u__thread.h]
1158 --- src/util/u_thread.h.orig    2021-09-21 16:54:06 UTC
1159 +++ src/util/u_thread.h
1160 @@ -40,6 +40,7 @@
1161  #include <signal.h>
1162  #ifdef HAVE_PTHREAD_NP_H
1163  #include <pthread_np.h>
1164 +#undef ALIGN
1165  #endif
1166  #endif
1167  
1168 @@ -129,7 +130,7 @@ static inline thrd_t u_thread_create(int
1169  static inline void u_thread_setname( const char *name )
1170  {
1171  #if defined(HAVE_PTHREAD)
1172 -#if DETECT_OS_LINUX || DETECT_OS_CYGWIN || DETECT_OS_SOLARIS
1173 +#if DETECT_OS_LINUX || DETECT_OS_CYGWIN
1174     int ret = pthread_setname_np(pthread_self(), name);
1175     if (ret == ERANGE) {
1176        char buf[16];
1177 @@ -138,7 +139,7 @@ static inline void u_thread_setname( con
1178        buf[len] = '\0';
1179        pthread_setname_np(pthread_self(), buf);
1180     }
1181 -#elif DETECT_OS_FREEBSD || DETECT_OS_OPENBSD
1182 +#elif DETECT_OS_FREEBSD || DETECT_OS_OPENBSD || DETECT_OS_DRAGONFLY
1183     pthread_set_name_np(pthread_self(), name);
1184  #elif DETECT_OS_NETBSD
1185     pthread_setname_np(pthread_self(), "%s", (void *)name);
1186 @@ -146,8 +147,6 @@ static inline void u_thread_setname( con
1187     pthread_setname_np(name);
1188  #elif DETECT_OS_HAIKU
1189     rename_thread(find_thread(NULL), name);
1190 -#else
1191 -#warning Not sure how to call pthread_setname_np
1192  #endif
1193  #endif
1194     (void)name;
1195 @@ -242,7 +241,7 @@ util_set_current_thread_affinity(const u
1196  static inline int64_t
1197  util_thread_get_time_nano(thrd_t thread)
1198  {
1199 -#if defined(HAVE_PTHREAD) && !defined(__APPLE__) && !defined(__HAIKU__)
1200 +#if defined(HAVE_PTHREAD) && !defined(__APPLE__) && !defined(__HAIKU__) && !defined(__sun)
1201     struct timespec ts;
1202     clockid_t cid;
1203  
1204
1205
1206 [FILE:25:files/special.mk]
1207 GALLIUM_DRIVERS+=       SWRAST
1208
1209
1210 [FILE:911:sunos/patch-src_gallium_targets_dri_meson.build]
1211 --- src/gallium/targets/dri/meson.build.orig    2020-12-31 03:59:58 UTC
1212 +++ src/gallium/targets/dri/meson.build
1213 @@ -45,11 +45,12 @@ libgallium_dri = shared_library(
1214      inc_gallium_winsys, include_directories('../../frontends/dri'),
1215    ],
1216    gnu_symbol_visibility : 'hidden',
1217 -  link_args : [ld_args_build_id, ld_args_gc_sections, gallium_dri_ld_args],
1218 +  link_args : [ld_args_gc_sections, gallium_dri_ld_args],
1219    link_depends : gallium_dri_link_depends,
1220 +  link_whole : [libdri, libdricommon, libgallium, libr300, _libnir, libglsl, libglcpp], # libr600, libamd_common
1221    link_with : [
1222 -    libdri, libmesa_gallium, libdricommon, libmegadriver_stub, libgalliumvl,
1223 -    libgallium, libglapi, libpipe_loader_static, libws_null, libwsw, libswdri,
1224 +    libmesa_gallium, libmegadriver_stub, libgalliumvl,
1225 +    libglapi, libpipe_loader_static, libws_null, libwsw, libswdri,
1226      libswkmsdri,
1227    ],
1228    dependencies : [
1229
1230
1231 [FILE:424:sunos/patch-src_gallium_targets_opencl_meson.build]
1232 --- src/gallium/targets/opencl/meson.build.orig 2021-01-29 18:33:19 UTC
1233 +++ src/gallium/targets/opencl/meson.build
1234 @@ -90,7 +90,7 @@ libopencl = shared_library(
1235    [],
1236    link_args : [ld_args_gc_sections, opencl_link_args],
1237    link_depends : opencl_link_deps,
1238 -  link_whole : libclover,
1239 +  link_whole : [libclover,libmesa_format],
1240    link_with : [libpipe_loader_dynamic, libgallium],
1241    dependencies : [
1242      idep_mesautil,
1243
1244
1245 [FILE:604:sunos/patch-src_gallium_targets_osmesa_meson.build]
1246 --- src/gallium/targets/osmesa/meson.build.orig 2020-12-31 03:59:58 UTC
1247 +++ src/gallium/targets/osmesa/meson.build
1248 @@ -49,9 +49,9 @@ libosmesa = shared_library(
1249      inc_gallium_drivers,
1250    ],
1251    link_depends : osmesa_link_deps,
1252 -  link_whole : [libosmesa_st, libglapi_static],
1253 +  link_whole : [libosmesa_st, libglapi_static, libsoftpipe, libgallium, _libnir, libglsl, libglcpp],
1254    link_with : [
1255 -    libmesa_gallium, libgallium, libws_null, osmesa_link_with,
1256 +    libmesa_gallium, libws_null, osmesa_link_with,
1257    ],
1258    dependencies : [
1259      dep_ws2_32, dep_selinux, dep_thread, dep_clock, dep_unwind,
1260
1261
1262 [FILE:2062:sunos/patch-src_gallium_targets_pipe-loader_meson.build]
1263 --- src/gallium/targets/pipe-loader/meson.build.orig    2021-01-29 18:33:19 UTC
1264 +++ src/gallium/targets/pipe-loader/meson.build
1265 @@ -57,16 +57,16 @@ if with_gallium_v3d
1266  endif
1267  
1268  pipe_loaders = [
1269 -  [with_gallium_i915, 'i915', driver_i915, []],
1270 -  [with_gallium_iris, 'iris', [driver_iris, idep_xmlconfig], []],
1271 -  [with_gallium_nouveau, 'nouveau', driver_nouveau, []],
1272 -  [with_gallium_r300, 'r300', driver_r300, []],
1273 -  [with_gallium_r600, 'r600', driver_r600, []],
1274 -  [with_gallium_radeonsi, 'radeonsi', [driver_radeonsi, idep_xmlconfig], []],
1275 -  [with_gallium_freedreno, 'msm', driver_freedreno, []],
1276 -  [with_gallium_kmsro, 'kmsro', _kmsro_targets, []],
1277 -  [with_gallium_svga, 'vmwgfx', driver_svga, []],
1278 -  [with_gallium_softpipe, 'swrast', [driver_swrast, driver_swr], [libwsw, libws_null]],
1279 +  [with_gallium_i915, 'i915', driver_i915, [], []],
1280 +  [with_gallium_iris, 'iris', [driver_iris, idep_xmlconfig], [], []],
1281 +  [with_gallium_nouveau, 'nouveau', driver_nouveau, [], []],
1282 +  [with_gallium_r300, 'r300', driver_r300, [], [libr300,libradeonwinsys,libmesa_format]],
1283 +  [with_gallium_r600, 'r600', driver_r600, [], [libr600,libradeonwinsys,libmesa_format,libgalliumvl]],
1284 +  [with_gallium_radeonsi, 'radeonsi', [driver_radeonsi], [], [libradeonsi,libradeonwinsys,libamd_common,libamd_common_llvm,libmesa_format,_libxmlconfig,libgalliumvl]],
1285 +  [with_gallium_freedreno, 'msm', driver_freedreno, [], []],
1286 +  [with_gallium_kmsro, 'kmsro', _kmsro_targets, [], []],
1287 +  [with_gallium_svga, 'vmwgfx', driver_svga, [], [libsvga,libsvgadrm,libmesa_format]],
1288 +  [with_gallium_softpipe, 'swrast', [driver_swrast, driver_swr], [libwsw, libws_null], [libllvmpipe,libmesa_format,libsoftpipe]],
1289  ]
1290  
1291  foreach x : pipe_loaders
1292 @@ -80,6 +80,7 @@ foreach x : pipe_loaders
1293        link_args : pipe_loader_link_args,
1294        link_depends : pipe_loader_link_deps,
1295        include_directories : pipe_loader_incs,
1296 +      link_whole : [x[4]],
1297        link_with : [pipe_loader_link_with, x[3]],
1298        dependencies : [idep_mesautil, idep_nir, dep_thread, x[2]],
1299        name_prefix : '',
1300
1301
1302 [FILE:838:sunos/patch-src_gallium_targets_va_meson.build]
1303 --- src/gallium/targets/va/meson.build.orig     2021-01-29 18:33:19 UTC
1304 +++ src/gallium/targets/va/meson.build
1305 @@ -39,13 +39,14 @@ libva_gallium = shared_library(
1306    include_directories : [
1307      inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_util, inc_gallium_winsys, inc_gallium_drivers,
1308    ],
1309 -  link_whole : [libva_st],
1310 +  link_whole : [libva_st, _libxmlconfig, libmesa_format, libloader, libpipe_loader_static],
1311    link_with : [
1312      libgalliumvlwinsys, libgalliumvl, libgallium,
1313 -    libpipe_loader_static, libws_null, libwsw, libswdri, libswkmsdri,
1314 +    libws_null, libwsw, libswdri, libswkmsdri,
1315 +    libr600, libradeonsi,
1316    ],
1317    dependencies : [
1318 -    dep_libdrm, driver_r600, driver_radeonsi, driver_nouveau,
1319 +    dep_libdrm, driver_nouveau,
1320      idep_mesautil,
1321    ],
1322    link_depends : va_link_depends,
1323
1324
1325 [FILE:784:sunos/patch-src_gallium_targets_vdpau_meson.build]
1326 --- src/gallium/targets/vdpau/meson.build.orig  2020-12-31 03:59:58 UTC
1327 +++ src/gallium/targets/vdpau/meson.build
1328 @@ -44,10 +44,10 @@ libvdpau_gallium = shared_library(
1329    include_directories : [
1330      inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_util, inc_gallium_winsys, inc_gallium_drivers,
1331    ],
1332 -  link_whole : [libvdpau_st],
1333 +  link_whole : [libvdpau_st, libr300, libradeonwinsys, libmesa_format, _libxmlconfig, libpipe_loader_static, libgallium, _libnir], # libr600, libradeonsi, libamd_common, libamd_common_llvm,
1334    link_with : [
1335      libgalliumvlwinsys, libgalliumvl, libgallium,
1336 -    libpipe_loader_static, libws_null, libwsw, libswdri, libswkmsdri,
1337 +    libws_null, libwsw, libswdri, libswkmsdri,
1338    ],
1339    dependencies : [
1340      idep_mesautil,
1341
1342
1343 [FILE:670:sunos/patch-src_gallium_targets_xa_meson.build]
1344 --- src/gallium/targets/xa/meson.build.orig     2020-12-31 03:59:58 UTC
1345 +++ src/gallium/targets/xa/meson.build
1346 @@ -40,9 +40,9 @@ libxatracker = shared_library(
1347    include_directories : [
1348      inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_util, inc_gallium_winsys, inc_gallium_drivers,
1349    ],
1350 -  link_whole : [libxa_st],
1351 +  link_whole : [libxa_st, libsvga, libsvgadrm, libpipe_loader_static, libmesa_format, _libxmlconfig, libgallium, _libnir],
1352    link_with : [
1353 -    libgalliumvl_stub, libgallium, libpipe_loader_static,
1354 +    libgalliumvl_stub, libgallium,
1355      libws_null, libwsw, libswdri, libswkmsdri,
1356    ],
1357    link_depends : xa_link_depends,
1358
1359
1360 [FILE:846:sunos/patch-src_gallium_targets_xvmc_meson.build]
1361 --- src/gallium/targets/xvmc/meson.build.orig   2021-01-29 18:33:19 UTC
1362 +++ src/gallium/targets/xvmc/meson.build
1363 @@ -39,12 +39,12 @@ libxvmc_gallium = shared_library(
1364    include_directories : [
1365      inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_util, inc_gallium_winsys, inc_gallium_drivers,
1366    ],
1367 -  link_whole : [libxvmc_st],
1368 +  link_whole : [libxvmc_st,libradeonwinsys,libr600,_libxmlconfig,libmesa_format,libpipe_loader_static],
1369    link_with : [
1370      libgalliumvlwinsys, libgalliumvl, libgallium,
1371      libpipe_loader_static, libws_null, libwsw, libswdri, libswkmsdri,
1372    ],
1373 -  dependencies : [idep_mesautil, driver_r600, driver_nouveau],
1374 +  dependencies : [idep_mesautil, driver_nouveau],
1375    link_depends : xvmc_link_depends,
1376    # Will be deleted during installation, see install_megadrivers.py
1377    install : true,
1378
1379
1380 [FILE:510:sunos/patch-src_gbm_meson.build]
1381 --- src/gbm/meson.build.orig    2021-01-29 18:33:19 UTC
1382 +++ src/gbm/meson.build
1383 @@ -49,8 +49,8 @@ libgbm = shared_library(
1384    include_directories : incs_gbm,
1385    c_args : [args_gbm],
1386    link_args : [ld_args_gc_sections],
1387 -  link_with : libloader,
1388 -  dependencies : [deps_gbm, dep_dl, dep_thread, idep_mesautil, idep_xmlconfig],
1389 +  link_with : [libloader, _libxmlconfig],
1390 +  dependencies : [deps_gbm, dep_dl, dep_thread, idep_mesautil],
1391    gnu_symbol_visibility : 'hidden',
1392    version : '1.0.0',
1393    install : true,
1394
1395
1396 [FILE:997:sunos/patch-src_mesa_drivers_dri_meson.build]
1397 --- src/mesa/drivers/dri/meson.build.orig       2020-12-31 03:59:58 UTC
1398 +++ src/mesa/drivers/dri/meson.build
1399 @@ -20,7 +20,7 @@
1400  
1401  subdir('common')
1402  
1403 -_dri_drivers = []
1404 +_dri_drivers = [ _libnir, libmesa_classic, libmesa_common, libintel_compiler, libglcpp, libdricommon ]
1405  _dri_link = []
1406  if with_dri_swrast
1407    subdir('swrast')
1408 @@ -59,14 +59,13 @@ if _dri_drivers != []
1409      [],
1410      link_whole : _dri_drivers,
1411      link_with : [
1412 -      libmegadriver_stub, libdricommon, libglapi,
1413 -      libmesa_classic,
1414 +      libmegadriver_stub, libglapi, libintel_dev,
1415      ],
1416      dependencies : [
1417        dep_selinux, dep_libdrm, dep_m, dep_thread, dep_dl,
1418 -      idep_nir, idep_xmlconfig, idep_mesautil,
1419 +      idep_xmlconfig, idep_mesautil,
1420      ],
1421 -    link_args : [ld_args_build_id, ld_args_bsymbolic, ld_args_gc_sections],
1422 +    link_args : [ld_args_build_id, ld_args_gc_sections],
1423      # Will be deleted during installation, see install_megadrivers.py
1424      install : true,
1425      install_dir : dri_drivers_path,
1426