Ravenports generated: 15 Jul 2018 17:24
[ravenports.git] / bucket_F0 / mesa
1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
2
3 NAMEBASE=               mesa
4 VERSION=                18.1.4
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-18.1.4.tar.xz:main
15 DF_INDEX=               1
16 SPKGS[standard]=        complete
17                         libs
18                         clover
19                         drivers
20                         osmesa
21
22 OPTIONS_AVAILABLE=      X86_DRIVERS ARM_DRIVERS
23 OPTIONS_STANDARD=       X86_DRIVERS ARM_DRIVERS
24 OPT_ON[aarch64]=        ARM_DRIVERS
25 OPT_ON[x86_64]=         X86_DRIVERS
26 OPT_ON[i386]=           X86_DRIVERS
27
28 BUILD_DEPENDS=          libpthread-stubs:single:standard
29                         libclc:single:standard
30                         llvm40:llvm:standard
31                         llvm40:clang:standard
32                         zlib:complete:standard
33                         libelf:single:standard
34                         libvdpau:single:standard
35                         libva:single:standard
36                         expat:static:standard
37 BUILDRUN_DEPENDS=       expat:shared:standard
38                         libdrm:single:standard
39                         ocl-icd:primary:standard
40                         opencl:single:standard
41 B_DEPS[sunos]=          libbsd4sol:single:standard
42 EXRUN[clover]=          llvm40:llvm:standard
43                         zlib:shared:standard
44                         libelf:single:standard
45                         expat:shared:standard
46                         libdrm:single:standard
47 EXRUN[drivers]=         llvm40:llvm:standard
48                         mesa:libs:standard
49                         zlib:shared:standard
50                         libelf:single:standard
51 EXRUN[osmesa]=          llvm40:llvm:standard
52                         mesa:libs:standard
53                         zlib:shared:standard
54
55 USES=                   bison gettext-tools gmake libtool pkgconfig
56                         python:py27,build shebangfix
57                         c++:clover,drivers,osmesa
58 XORG_COMPONENTS=        x11 xcb xdamage xext xfixes xshmfence xxf86vm xv
59                         xvmc
60
61 LICENSE=                MIT:libs CUSTOM1:libs CUSTOM2:libs
62 LICENSE_NAME=           CUSTOM1:"Kronos License (MIT with modifications)"
63                         CUSTOM2:"SGI Free Software License B"
64 LICENSE_FILE=           MIT:{{WRKDIR}}/LICENSE_MIT
65                         CUSTOM1:{{WRKDIR}}/LICENSE_KHRONOS
66                         CUSTOM2:{{WRKDIR}}/LICENSE_SGI
67 LICENSE_AWK=            MIT:"^$$"
68                         CUSTOM2:"^$$"
69 LICENSE_SOURCE=         MIT:{{WRKSRC}}/include/GL/gl.h
70                         CUSTOM2:{{WRKSRC}}/src/glx/eval.c
71 LICENSE_SCHEME=         multi
72
73 FPC_EQUIVALENT=         graphics/mesa-libs
74 SHEBANG_FILES=          src/gallium/*/*/*.py
75                         src/gallium/tools/trace/*.py
76                         src/gallium/drivers/svga/svgadump/svga_dump.py
77                         src/mapi/glapi/gen/*.py
78                         src/mapi/mapi_abi.py
79                         src/util/xmlpool/gen_xmlpool.py
80                         src/mesa/main/get_*.py
81                         src/util/format_srgb.py
82                         src/amd/*/*.py
83                         src/intel/genxml/gen_pack_header.py
84 SHEBANG_OLD_PYTHON=     /usr/bin/env[[:space:]]python2
85                         /usr/bin/python2
86                         /bin/env[[:space:]]python
87
88 MUST_CONFIGURE=         gnu
89 CONFIGURE_ARGS=         --enable-llvm
90                         --enable-texture-float
91                         --enable-vdpau
92                         --enable-va
93                         --enable-xvmc
94                         --disable-glx-tls
95                         --disable-gles1
96                         --disable-libunwind
97                         --with-platforms=x11,drm
98                         --enable-gallium-osmesa
99                         --with-llvm-prefix={{LOCALBASE}}/llvm40
100                         --with-dri-drivers="{{DRI_DRIVERS:tl}}"
101                         --with-gallium_drivers="{{GALLIUM_DRIVERS:tl}}"
102 CONFIGURE_ENV=          ax_cv_check_cflags___Wno_initializer_overrides=no
103
104 INSTALL_TARGET=         install-strip
105 INSTALL_REQ_TOOLCHAIN=  yes
106
107 LDFLAGS=                -Wl,-rpath,{{LOCALBASE}}/llvm40/lib
108 VAR_OPSYS[sunos]=       CPPFLAGS=-D__EXTENSIONS__=1
109                         CPPFLAGS=-D_POSIX_PTHREAD_SEMANTICS
110                         CFLAGS=-DF_DUPFD_CLOEXEC=F_DUPFD
111
112 [ARM_DRIVERS].DESCRIPTION=              Build drivers for aarch64 architecture
113 [ARM_DRIVERS].MAKEFILE_ON=              GALLIUM_DRIVERS+=FREEDRENO
114                                         GALLIUM_DRIVERS+=VC4
115
116 [X86_DRIVERS].DESCRIPTION=              Build drivers for i386 and x86_64 architectures
117 [X86_DRIVERS].CONFIGURE_ENABLE_BOTH=    opencl
118                                         opencl-icd
119 [X86_DRIVERS].MAKEFILE_ON=              DRI_DRIVERS+=RADEON
120                                         DRI_DRIVERS+=R200
121                                         DRI_DRIVERS+=I915
122                                         DRI_DRIVERS+=I965
123                                         GALLIUM_DRIVERS+=R300
124                                         GALLIUM_DRIVERS+=R600
125                                         GALLIUM_DRIVERS+=RADEONSI
126                                         GALLIUM_DRIVERS+=SVGA
127
128 post-patch:
129         ${REINPLACE_CMD} -e 's|/etc/|${PREFIX}/etc/|g' \
130                 ${WRKSRC}/src/util/xmlconfig.c
131         # Use --link-static until ports/223191 is fixed
132         ${REINPLACE_CMD} -e '/$$LLVM_VERSION_MAJOR -ge 4/s|test |false |' \
133                 ${WRKSRC}/configure
134
135 post-extract:
136         ${AWK} '/Copyright/,/DEALINGS/' ${WRKSRC}/include/GL/glext.h \
137                 > ${WRKDIR}/LICENSE_KHRONOS
138
139 post-patch-freebsd:
140         ${REINPLACE_CMD} -e 's|x86_64|amd64|' ${WRKSRC}/configure
141
142 post-patch-sunos:
143         ${REINPLACE_CMD}\
144                 -e '/^CFLAGS =/ s|$$| -I$$(prefix)/include/bsd|' \
145                 -e '/^LDFLAGS =/ s|$$| -lbsd|' \
146                 ${WRKSRC}/src/egl/Makefile.in \
147                 ${WRKSRC}/src/gallium/drivers/r600/Makefile.in \
148                 ${WRKSRC}/src/gallium/drivers/radeon/Makefile.in \
149                 ${WRKSRC}/src/gallium/drivers/radeonsi/Makefile.in \
150                 ${WRKSRC}/src/gallium/auxiliary/Makefile.in \
151                 ${WRKSRC}/src/loader/Makefile.in
152
153 [FILE:808:descriptions/desc.libs]
154 The Mesa project began as an open-source implementation of the OpenGL
155 specification - a system for rendering interactive 3D graphics.
156
157 Over the years the project has grown to implement more graphics APIs,
158 including OpenGL ES (versions 1, 2, 3), OpenCL, OpenMAX, VDPAU, VA API,
159 XvMC and Vulkan.
160
161 A variety of device drivers allows the Mesa libraries to be used in many
162 different environments ranging from software emulation to complete
163 hardware acceleration for modern GPUs.
164
165 Mesa ties into several other open-source projects: the Direct Rendering
166 Infrastructure and X.org to provide OpenGL support on Linux, FreeBSD
167 and other operating systems.
168
169 This package contains the Mesa OpenGL libraries for GLX and EGL clients.
170 These include libEGL, libGL, and libglesv2 as well as utlity libraries
171 libglapi and gbm.
172
173
174 [FILE:130:descriptions/desc.clover]
175 This package contains Mesa's libOpenCL implementation "Clover".
176 It is built upon GALLIUM and currently only supports Radeon GPUs.
177
178
179 [FILE:162:descriptions/desc.drivers]
180 This package contains the Mesa OpenGL libraries for GLX and EGL clients.
181 These include libEGL, libGL, and libglesv2 as well as utlity libraries
182 libglapi and gbm.
183
184
185 [FILE:591:descriptions/desc.osmesa]
186 Mesa is a 3-D graphics library with an API which is very similar to that
187 of OpenGL*.  To the extent that Mesa utilizes the OpenGL command syntax or
188 state machine, it is being used with authorization from Silicon Graphics,
189 Inc.  However, the author makes no claim that Mesa is in any way a
190 compatible replacement for OpenGL or associated with Silicon Graphics, Inc.
191
192 This is a Off-Screen version of Mesa in order to do off-screen rendering in
193 other packages like VTK. Offscreen rendering is useful for a
194 number of things, such as batch processing, parallel processing, and
195 remote processing.
196
197
198 [FILE:97:distinfo]
199 3061488b5d85504092cf4343816cfb2d96f2ad9bc2edec31fc96933d184cf58b     11133392 mesa-18.1.4.tar.xz
200
201
202 [FILE:721:manifests/plist.libs]
203 @comment lib/libwayland-egl.so
204 @comment lib/libwayland-egl.so.1
205 @comment lib/libwayland-egl.so.1.0.0
206 @comment lib/pkgconfig/wayland-egl.pc
207 include/gbm.h
208 include/EGL/
209  egl.h
210  eglext.h
211  eglextchromium.h
212  eglmesaext.h
213  eglplatform.h
214 include/GL/
215  gl.h
216  gl_mangle.h
217  glcorearb.h
218  glext.h
219  glx.h
220  glx_mangle.h
221  glxext.h
222 include/GLES2/
223  gl2.h
224  gl2ext.h
225  gl2platform.h
226 include/GLES3/
227  gl3.h
228  gl31.h
229  gl32.h
230  gl3ext.h
231  gl3platform.h
232 include/KHR/khrplatform.h
233 lib/
234  libEGL.so
235  libEGL.so.1
236  libEGL.so.1.0.0
237  libGL.so
238  libGL.so.1
239  libGL.so.1.2.0
240  libGLESv2.so
241  libGLESv2.so.2
242  libGLESv2.so.2.0.0
243  libgbm.so
244  libgbm.so.1
245  libgbm.so.1.0.0
246  libglapi.so
247  libglapi.so.0
248  libglapi.so.0.0.0
249 lib/pkgconfig/
250  egl.pc
251  gbm.pc
252  gl.pc
253  glesv2.pc
254
255
256 [FILE:245:manifests/plist.clover]
257 %%X86_DRIVERS-ON%%etc/OpenCL/vendors/mesa.icd
258 %%X86_DRIVERS-ON%%lib/
259  libMesaOpenCL.so
260  libMesaOpenCL.so.1
261  libMesaOpenCL.so.1.0.0
262 %%X86_DRIVERS-ON%%lib/gallium-pipe/
263  pipe_r300.so
264  pipe_r600.so
265  pipe_radeonsi.so
266  pipe_swrast.so
267  pipe_vmwgfx.so
268
269
270 [FILE:751:manifests/plist.drivers]
271 %%ARM_DRIVERS-ON%%lib/dri/
272  kgsl_dri.so
273  msm_dri.so
274  vc4_dri.so
275 %%X86_DRIVERS-ON%%lib/
276  libXvMCr600.so
277  libXvMCr600.so.1
278  libXvMCr600.so.1.0
279  libXvMCr600.so.1.0.0
280 %%X86_DRIVERS-ON%%lib/dri/
281  i915_dri.so
282  i965_dri.so
283  r200_dri.so
284  r300_dri.so
285  r600_dri.so
286  r600_drv_video.so
287  radeon_dri.so
288  radeonsi_dri.so
289  radeonsi_drv_video.so
290  vmwgfx_dri.so
291 %%X86_DRIVERS-ON%%lib/vdpau/
292  libvdpau_r300.so
293  libvdpau_r300.so.1
294  libvdpau_r300.so.1.0
295  libvdpau_r300.so.1.0.0
296  libvdpau_r600.so
297  libvdpau_r600.so.1
298  libvdpau_r600.so.1.0
299  libvdpau_r600.so.1.0.0
300  libvdpau_radeonsi.so
301  libvdpau_radeonsi.so.1
302  libvdpau_radeonsi.so.1.0
303  libvdpau_radeonsi.so.1.0.0
304 etc/drirc
305 include/GL/internal/dri_interface.h
306 lib/dri/
307  kms_swrast_dri.so
308  swrast_dri.so
309 lib/pkgconfig/dri.pc
310
311
312 [FILE:99:manifests/plist.osmesa]
313 include/GL/osmesa.h
314 lib/
315  libOSMesa.so
316  libOSMesa.so.8
317  libOSMesa.so.8.0.0
318 lib/pkgconfig/osmesa.pc
319
320
321 [FILE:2052:patches/patch-configure]
322 --- configure.orig      2018-06-15 20:37:56 UTC
323 +++ configure
324 @@ -21548,7 +21548,7 @@ LDFLAGS=$save_LDFLAGS
325  
326  
327  case "$host_os" in
328 -openbsd* | darwin* )
329 +openbsd* | darwin* | solaris* )
330      LD_NO_UNDEFINED="" ;;
331  *)
332      if test "x$enable_sanitize" = xno; then
333 @@ -23554,7 +23554,7 @@ fi
334  
335  
336  case "$host_os" in
337 -linux*)
338 +linux* | freebsd* | dragonfly*)
339      dri3_default=yes
340      ;;
341  *)
342 @@ -27659,9 +27659,6 @@ rm -f core conftest.err conftest.$ac_obj
343          CLANG_LIBDIR=${LLVM_LIBDIR}
344      fi
345      CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
346 -    if test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"; then :
347 -  as_fn_error $? "Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries." "$LINENO" 5
348 -fi
349  fi
350   if test "x$enable_opencl" = xyes; then
351    HAVE_CLOVER_TRUE=
352 @@ -28996,7 +28993,7 @@ if test "x$enable_llvm" = xyes; then
353      LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
354  
355  
356 -    if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 9; then
357 +    if false $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 9; then
358          if test "x$enable_llvm_shared_libs" = xyes; then
359              LLVM_LIBS="`$LLVM_CONFIG --link-shared --libs ${LLVM_COMPONENTS}`"
360          else
361 @@ -29010,7 +29007,7 @@ if test "x$enable_llvm" = xyes; then
362          else
363              { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Building mesa with statically linked LLVM may cause compilation issues" >&5
364  $as_echo "$as_me: WARNING: Building mesa with statically linked LLVM may cause compilation issues" >&2;}
365 -                                    if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
366 +                                    if false $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
367                  LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
368              fi
369          fi
370
371
372 [FILE:512:patches/patch-include_GL_internal_dri__interface.h]
373 GCC on 9.x doesn't allow types to be overwritten, these types are defined
374 in drm.h also, which causes build issues in xorg-server.
375
376 --- include/GL/internal/dri_interface.h.orig    2018-06-15 20:37:48 UTC
377 +++ include/GL/internal/dri_interface.h
378 @@ -40,13 +40,7 @@
379  #ifndef DRI_INTERFACE_H
380  #define DRI_INTERFACE_H
381  
382 -#ifdef HAVE_LIBDRM
383  #include <drm.h>
384 -#else
385 -typedef unsigned int drm_context_t;
386 -typedef unsigned int drm_drawable_t;
387 -typedef struct drm_clip_rect drm_clip_rect_t;
388 -#endif
389  
390  #include <stdint.h>
391  
392
393
394 [FILE:629:patches/patch-src_amd_common_ac__debug.c]
395 --- src/amd/common/ac_debug.c.orig      2018-06-15 20:37:48 UTC
396 +++ src/amd/common/ac_debug.c
397 @@ -560,6 +560,10 @@ void ac_parse_ib_chunk(FILE *f, uint32_t
398                        unsigned trace_id_count, enum chip_class chip_class,
399                         ac_debug_addr_callback addr_callback, void *addr_callback_data)
400  {
401 +#ifdef __sun__
402 +       printf("\nac_parse_ib_chunk: open_memstream unsupported on solaris");
403 +       exit (1);
404 +#else
405         struct ac_ib_parser ib = {};
406         ib.ib = ib_ptr;
407         ib.num_dw = num_dw;
408 @@ -585,6 +589,7 @@ void ac_parse_ib_chunk(FILE *f, uint32_t
409                 printf("\nPacket ends after the end of IB.\n");
410                 exit(1);
411         }
412 +#endif
413  }
414  
415  /**
416
417
418 [FILE:321:patches/patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c]
419 - Define ETIME if missing
420
421 --- src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c.orig  2018-06-15 20:37:48 UTC
422 +++ src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
423 @@ -35,6 +35,9 @@
424  #include "radv_amdgpu_bo.h"
425  #include "sid.h"
426  
427 +#ifndef ETIME
428 +#define ETIME ETIMEDOUT
429 +#endif
430  
431  enum {
432         VIRTUAL_BUFFER_HASH_TABLE_SIZE = 1024
433
434
435 [FILE:784:patches/patch-src_compiler_glsl_linker.cpp]
436 --- src/compiler/glsl/linker.cpp.orig   2018-06-15 20:37:48 UTC
437 +++ src/compiler/glsl/linker.cpp
438 @@ -88,6 +88,38 @@
439  #include "main/enums.h"
440  #include "main/mtypes.h"
441  
442 +#ifdef __sun__
443 +/* uses libbsd4sol prototypes, so can't be static */
444 +#include <stdlib.h>
445 +#include <stdint.h>
446 +#include <string.h>
447 +
448 +size_t
449 +strnlen(const char *s, size_t maxlen)
450 +{
451 +       size_t len;
452 +       for (len = 0; len < maxlen; len++, s++) {
453 +               if (!*s) break;
454 +       }
455 +       return (len);
456 +}
457 +
458 +char *
459 +strndup(const char *str, size_t n)
460 +{
461 +    size_t len;
462 +    char *copy;
463 +
464 +    len = strlen(str);
465 +    if (len <= n)
466 +        return strdup(str);
467 +    if ((copy = (char *)malloc(len + 1)) == NULL)
468 +        return (NULL);
469 +    memcpy(copy, str, len);
470 +    copy[len] = '\0';
471 +    return (copy);
472 +}
473 +#endif
474  
475  namespace {
476  
477
478
479 [FILE:586:patches/patch-src_egl_drivers_dri2_platform__x11.c]
480 # work-around for https://bugs.freedesktop.org/show_bug.cgi?id=100627
481 #
482 --- src/egl/drivers/dri2/platform_x11.c.orig    2018-06-15 20:37:48 UTC
483 +++ src/egl/drivers/dri2/platform_x11.c
484 @@ -1469,6 +1469,9 @@ dri2_initialize_x11(_EGLDriver *drv, _EG
485  
486     if (!disp->Options.ForceSoftware) {
487  #ifdef HAVE_DRI3
488 +#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && !defined(__DRM_NEXT__)
489 +      if (env_var_as_boolean("LIBGL_DRI3_ENABLE", false))
490 +#endif
491        if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false))
492           initialized = dri2_initialize_x11_dri3(drv, disp);
493  #endif
494
495
496 [FILE:3256:patches/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c]
497 Revert the following commit.
498
499 FreeBSD and DragonFly don't have the required render nodes.
500
501 -------
502
503 From 69a1b9959e59653da262185c4e2cf57d24939b19 Mon Sep 17 00:00:00 2001
504 From: Emil Velikov <emil.l.velikov@gmail.com>
505 Date: Mon, 29 Jun 2015 12:36:45 +0100
506 Subject: pipe-loader: drop support for non-render node devices
507
508 Render nodes have been around for quite some time. Removing support via
509 the master/primary node allows us to clean up the conditional
510 compilation and simplify the build greatly.
511
512 For example currently we the pipe-loader, which explicitly links against
513 xcb and friends (for X auth) if found at compile-time. That
514 would cause problems as one will be forced to use X/xcb, even if it's a
515 headless system that is used for opencl.
516
517 v2: Clarify the linking topic in the commit message.
518
519 Cc: Tom Stellard <thomas.stellard@amd.com>
520 Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
521 Reviewed-by: Francisco Jerez <currojerez@riseup.net>
522
523
524 --- src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c.orig    2018-06-15 20:37:48 UTC
525 +++ src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
526 @@ -213,6 +213,14 @@ pipe_loader_drm_probe_fd(struct pipe_loa
527  }
528  
529  static int
530 +open_drm_minor(int minor)
531 +{
532 +   char path[PATH_MAX];
533 +   snprintf(path, sizeof(path), DRM_DEV_NAME, DRM_DIR_NAME, minor);
534 +   return open(path, O_RDWR, 0);
535 +}
536 +
537 +static int
538  open_drm_render_node_minor(int minor)
539  {
540     char path[PATH_MAX];
541 @@ -224,8 +232,15 @@ open_drm_render_node_minor(int minor)
542  int
543  pipe_loader_drm_probe(struct pipe_loader_device **devs, int ndev)
544  {
545 -   int i, j, fd;
546 +   int i, k, fd, num_render_node_devs;
547 +   int j = 0;
548 +
549 +   struct {
550 +      unsigned vendor_id;
551 +      unsigned chip_id;
552 +   } render_node_devs[DRM_RENDER_NODE_MAX_NODES];
553  
554 +   /* Look for render nodes first */
555     for (i = DRM_RENDER_NODE_MIN_MINOR, j = 0;
556          i <= DRM_RENDER_NODE_MAX_MINOR; i++) {
557        struct pipe_loader_device *dev;
558 @@ -239,6 +254,9 @@ pipe_loader_drm_probe(struct pipe_loader
559           continue;
560        }
561  
562 +      render_node_devs[j].vendor_id = dev->u.pci.vendor_id;
563 +      render_node_devs[j].chip_id = dev->u.pci.chip_id;
564 +
565        if (j < ndev) {
566           devs[j] = dev;
567        } else {
568 @@ -248,6 +266,46 @@ pipe_loader_drm_probe(struct pipe_loader
569        j++;
570     }
571  
572 +   num_render_node_devs = j;
573 +
574 +   /* Next look for drm devices. */
575 +   for (i = 0; i < DRM_MAX_MINOR; i++) {
576 +      struct pipe_loader_device *dev;
577 +      boolean duplicate = FALSE;
578 +      fd = open_drm_minor(i);
579 +      if (fd < 0)
580 +         continue;
581 +
582 +      if (!pipe_loader_drm_probe_fd(&dev, fd)) {
583 +         close(fd);
584 +         continue;
585 +      }
586 +
587 +      /* Check to make sure we aren't already accessing this device via
588 +       * render nodes.
589 +       */
590 +      for (k = 0; k < num_render_node_devs; k++) {
591 +         if (dev->u.pci.vendor_id == render_node_devs[k].vendor_id &&
592 +             dev->u.pci.chip_id == render_node_devs[k].chip_id) {
593 +            close(fd);
594 +            dev->ops->release(&dev);
595 +            duplicate = TRUE;
596 +            break;
597 +         }
598 +      }
599 +
600 +      if (duplicate)
601 +         continue;
602 +
603 +      if (j < ndev) {
604 +         devs[j] = dev;
605 +      } else {
606 +         dev->ops->release(&dev);
607 +      }
608 +
609 +      j++;
610 +   }
611 +
612     return j;
613  }
614  
615
616
617 [FILE:257:patches/patch-src_gallium_auxiliary_util_u__math.h]
618 --- src/gallium/auxiliary/util/u_math.h.orig    2018-06-15 20:37:48 UTC
619 +++ src/gallium/auxiliary/util/u_math.h
620 @@ -49,6 +49,9 @@
621  #include "util/bitscan.h"
622  
623  #ifdef __cplusplus
624 +# ifdef __sun__
625 +#define restrict       __restrict__
626 +# endif
627  extern "C" {
628  #endif
629  
630
631
632 [FILE:357:patches/patch-src_gallium_drivers_radeonsi_si__shader.c]
633 --- src/gallium/drivers/radeonsi/si_shader.c.orig       2018-06-15 20:37:48 UTC
634 +++ src/gallium/drivers/radeonsi/si_shader.c
635 @@ -22,6 +22,10 @@
636   * USE OR OTHER DEALINGS IN THE SOFTWARE.
637   */
638  
639 +#ifdef __sun__
640 +#include <alloca.h> /* for alloca */
641 +#endif
642 +
643  #include "gallivm/lp_bld_const.h"
644  #include "gallivm/lp_bld_gather.h"
645  #include "gallivm/lp_bld_intr.h"
646
647
648 [FILE:511:patches/patch-src_gallium_drivers_radeonsi_si__state__shaders.c]
649 --- src/gallium/drivers/radeonsi/si_state_shaders.c.orig        2018-06-15 20:37:48 UTC
650 +++ src/gallium/drivers/radeonsi/si_state_shaders.c
651 @@ -1515,6 +1515,7 @@ static void si_build_shader_variant(stru
652                 return;
653         }
654  
655 +#ifndef __sun__
656         if (shader->compiler_ctx_state.is_debug_context) {
657                 FILE *f = open_memstream(&shader->shader_log,
658                                          &shader->shader_log_size);
659 @@ -1523,6 +1524,7 @@ static void si_build_shader_variant(stru
660                         fclose(f);
661                 }
662         }
663 +#endif
664  
665         si_shader_init_pm4_state(sscreen, shader);
666  }
667
668
669 [FILE:360:patches/patch-src_gallium_drivers_vc4_vc4__bufmgr.c]
670 # define ETIME as ETIMEOUT same as in intel driver
671 #
672 --- src/gallium/drivers/vc4/vc4_bufmgr.c.orig   2018-06-15 20:37:48 UTC
673 +++ src/gallium/drivers/vc4/vc4_bufmgr.c
674 @@ -27,6 +27,9 @@
675  #include <fcntl.h>
676  #include <xf86drm.h>
677  #include <xf86drmMode.h>
678 +#ifndef ETIME
679 +#define ETIME ETIMEDOUT
680 +#endif
681  
682  #include "util/u_hash_table.h"
683  #include "util/u_memory.h"
684
685
686 [FILE:1043:patches/patch-src_gallium_include_pipe_p__config.h]
687 --- src/gallium/include/pipe/p_config.h.orig    2018-06-15 20:37:48 UTC
688 +++ src/gallium/include/pipe/p_config.h
689 @@ -77,6 +77,13 @@
690  #define PIPE_CC_ICL
691  #endif
692  
693 +#if defined(__sparc__) || defined(__sparc64__)
694 +#define PIPE_ARCH_SPARC
695 +#if defined(__sparc64__)
696 +#define PIPE_ARCH_SPARC_64
697 +#endif
698 +#endif
699 +
700  
701  /*
702   * Processor architecture
703 @@ -131,7 +138,7 @@
704  
705  #if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) || defined(PIPE_ARCH_ARM) || defined(PIPE_ARCH_AARCH64)
706  #define PIPE_ARCH_LITTLE_ENDIAN
707 -#elif defined(PIPE_ARCH_PPC) || defined(PIPE_ARCH_PPC_64) || defined(PIPE_ARCH_S390)
708 +#elif defined(PIPE_ARCH_PPC) || defined(PIPE_ARCH_PPC_64) || defined(PIPE_ARCH_S390) || defined(PIPE_ARCH_SPARC) || defined(PIPE_ARCH_SPARC_64)
709  #define PIPE_ARCH_BIG_ENDIAN
710  #endif
711  
712 @@ -160,6 +167,12 @@
713  #define PIPE_OS_ANDROID
714  #endif
715  
716 +#if defined(__DragonFly__)
717 +#define PIPE_OS_DRAGONFLY
718 +#define PIPE_OS_BSD
719 +#define PIPE_OS_UNIX
720 +#endif
721 +
722  #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
723  #define PIPE_OS_FREEBSD
724  #define PIPE_OS_BSD
725
726
727 [FILE:1604:patches/patch-src_gallium_state__trackers_clover_llvm_invocation.cpp]
728 # fix errors like the following
729 #
730 # llvm/invocation.cpp:(.text+0x1275): undefined reference to `std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::c_str()
731  const'
732 # /usr/bin/ld: ../../../../src/gallium/state_trackers/clover/.libs/libclover.a(libclllvm_la-invocation.o): relocation R_X86_64_PC32 against `_ZNKSt3__112bas
733 ic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5c_strEv' can not be used when making a shared object; recompile with -fPIC
734 # /usr/bin/ld: final link failed: Bad value
735 #
736 --- src/gallium/state_trackers/clover/llvm/invocation.cpp.orig  2018-06-15 20:37:48 UTC
737 +++ src/gallium/state_trackers/clover/llvm/invocation.cpp
738 @@ -181,6 +181,8 @@ namespace {
739        return get_lang_standard_from_version_str(device_version);
740     }
741  
742 +   const char* cstr(const std::string& str) { return str.c_str(); }
743 +
744     std::unique_ptr<clang::CompilerInstance>
745     create_compiler_instance(const device &dev,
746                              const std::vector<std::string> &opts,
747 @@ -193,8 +195,8 @@ namespace {
748        // Parse the compiler options.  A file name should be present at the end
749        // and must have the .cl extension in order for the CompilerInvocation
750        // class to recognize it as an OpenCL source file.
751 -      const std::vector<const char *> copts =
752 -         map(std::mem_fn(&std::string::c_str), opts);
753 +      std::vector<const char *> copts(opts.size());
754 +      std::transform(opts.begin(), opts.end(), copts.begin(), cstr);
755  
756        const target &target = dev.ir_target();
757        const std::string &device_clc_version = dev.device_clc_version();
758
759
760 [FILE:635:patches/patch-src_gallium_state__trackers_clover_llvm_metadata.hpp]
761 # Fix error: no matching constructor for initialization of 'std::vector<const ::llvm::MDNode *>' 
762 #
763 --- src/gallium/state_trackers/clover/llvm/metadata.hpp.orig    2018-06-15 20:37:48 UTC
764 +++ src/gallium/state_trackers/clover/llvm/metadata.hpp
765 @@ -42,7 +42,7 @@ namespace clover {
766           get_kernel_nodes(const ::llvm::Module &mod) {
767              if (const ::llvm::NamedMDNode *n =
768                     mod.getNamedMetadata("opencl.kernels"))
769 -               return { n->op_begin(), n->op_end() };
770 +               return { n->getOperand(0), n->getOperand(n->getNumOperands()) };
771              else
772                 return {};
773           }
774
775
776 [FILE:1150:patches/patch-src_gallium_state__trackers_clover_util_range.hpp]
777 From b95533b981af9a6687b41418e7cc2a5652fc2bdb Mon Sep 17 00:00:00 2001
778 From: =?UTF-8?q?Jean-S=C3=A9bastien=20P=C3=A9dron?= <dumbbell@FreeBSD.org>
779 Date: Fri, 7 Mar 2014 15:16:08 +0100
780 Subject: [PATCH 3/3] Work around for clang 3.4 which fails to build Clover
781
782 See:
783   https://bugs.freedesktop.org/show_bug.cgi?id=74098#c3
784 --- src/gallium/state_trackers/clover/util/range.hpp.orig       2018-06-15 20:37:48 UTC
785 +++ src/gallium/state_trackers/clover/util/range.hpp
786 @@ -362,6 +362,12 @@ namespace clover {
787        return { i, i + n };
788     }
789  
790 +   namespace detail {
791 +      template<typename T>
792 +      using fixup_function_type =
793 +         typename std::conditional<std::is_function<T>::value, T &, T>::type;
794 +   }
795 +
796     ///
797     /// Create a range by transforming the contents of a number of
798     /// source ranges \a rs element-wise using a provided functor \a f.
799 @@ -369,7 +375,7 @@ namespace clover {
800     /// \sa adaptor_range.
801     ///
802     template<typename F, typename... Rs>
803 -   adaptor_range<F, Rs...>
804 +   adaptor_range<detail::fixup_function_type<F>, Rs...>
805     map(F &&f, Rs &&... rs) {
806        return { std::forward<F>(f), std::forward<Rs>(rs)... };
807     }
808
809
810 [FILE:323:patches/patch-src_gallium_winsys_amdgpu_drm_amdgpu__cs.c]
811 --- src/gallium/winsys/amdgpu/drm/amdgpu_cs.c.orig      2018-06-15 20:37:48 UTC
812 +++ src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
813 @@ -37,6 +37,10 @@
814  #define AMDGPU_IB_FLAG_TC_WB_NOT_INVALIDATE (1 << 3)
815  #endif
816  
817 +#ifdef __sun__
818 +#include <alloca.h>
819 +#endif
820 +
821  DEBUG_GET_ONCE_BOOL_OPTION(noop, "RADEON_NOOP", false)
822  
823  /* FENCES */
824
825
826 [FILE:575:patches/patch-src_glx_glxext.c]
827 # work-around for https://bugs.freedesktop.org/show_bug.cgi?id=100627
828 #
829 --- src/glx/glxext.c.orig       2018-06-15 20:37:48 UTC
830 +++ src/glx/glxext.c
831 @@ -920,6 +920,9 @@ __glXInitialize(Display * dpy)
832  #if defined(GLX_USE_DRM)
833     if (glx_direct && glx_accel) {
834  #if defined(HAVE_DRI3)
835 +#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && !defined(__DRM_NEXT__)
836 +      if (env_var_as_boolean("LIBGL_DRI3_ENABLE", false))
837 +#endif
838        if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false))
839           dpyPriv->dri3Display = dri3_create_display(dpy);
840  #endif /* HAVE_DRI3 */
841
842
843 [FILE:686:patches/patch-src_intel_Makefile.in]
844 ../../src/util/.libs/libmesautil.a(libmesautil_la-half_float.o): In function `_mesa_float_to_half':
845 half_float.c:(.text+0x94): undefined reference to `lrintf'
846 half_float.c:(.text+0xbf): undefined reference to `lrintf'
847 cc: error: linker command failed with exit code 1 (use -v to see invocation)
848 gmake[5]: *** [Makefile:2706: tools/aubinator_error_decode] Error 1
849
850 --- src/intel/Makefile.in.orig  2018-06-15 20:38:01 UTC
851 +++ src/intel/Makefile.in
852 @@ -2099,7 +2099,8 @@ tools_aubinator_error_decode_LDADD = \
853         isl/libisl.la \
854         $(top_builddir)/src/util/libmesautil.la \
855         $(PTHREAD_LIBS) \
856 -       $(ZLIB_LIBS)
857 +       $(ZLIB_LIBS) \
858 +       -lm
859  
860  tools_aubinator_error_decode_CFLAGS = \
861         $(AM_CFLAGS) \
862
863
864 [FILE:995:patches/patch-src_intel_compiler_brw__eu__validate.c]
865 --- src/intel/compiler/brw_eu_validate.c.orig   2018-06-15 20:37:48 UTC
866 +++ src/intel/compiler/brw_eu_validate.c
867 @@ -28,6 +28,39 @@
868  
869  #include "brw_eu.h"
870  
871 +#ifdef __sun__
872 +#include <string.h>
873 +
874 +static void *
875 +memmem(const void *l, size_t l_len, const void *s, size_t s_len)
876 +{
877 +       char *cur, *last;
878 +       const char *cl = (const char *)l;
879 +       const char *cs = (const char *)s;
880 +
881 +       /* we need something to compare */
882 +       if (l_len == 0 || s_len == 0)
883 +               return NULL;
884 +
885 +       /* "s" must be smaller or equal to "l" */
886 +       if (l_len < s_len)
887 +               return NULL;
888 +
889 +       /* special case where s_len == 1 */
890 +       if (s_len == 1)
891 +               return memchr(l, (int)*cs, l_len);
892 +
893 +       /* the last position where its possible to find "s" in "l" */
894 +       last = (char *)cl + l_len - s_len;
895 +
896 +       for (cur = (char *)cl; cur <= last; cur++)
897 +               if (cur[0] == cs[0] && memcmp(cur, cs, s_len) == 0)
898 +                       return cur;
899 +
900 +       return NULL;
901 +}
902 +#endif
903 +
904  /* We're going to do lots of string concatenation, so this should help. */
905  struct string {
906     char *str;
907
908
909 [FILE:794:patches/patch-src_intel_compiler_brw__fs__bank__conflicts.cpp]
910 compiler/brw_fs_bank_conflicts.cpp:719:25: error: scalar initializer cannot be empty
911       vector_type s_p = {}, s_n = {};
912                         ^~
913 compiler/brw_fs_bank_conflicts.cpp:719:35: error: scalar initializer cannot be empty
914       vector_type s_p = {}, s_n = {};
915                                   ^~
916
917 --- src/intel/compiler/brw_fs_bank_conflicts.cpp.orig   2018-06-15 20:37:48 UTC
918 +++ src/intel/compiler/brw_fs_bank_conflicts.cpp
919 @@ -716,7 +716,7 @@ namespace {
920                     const weight_vector_type &conflicts)
921     {
922        const unsigned m = DIV_ROUND_UP(conflicts.size, vector_width);
923 -      vector_type s_p = {}, s_n = {};
924 +      vector_type s_p = {0}, s_n = {0};
925  
926        for (unsigned r = 0; r < m; r++) {
927           s_p = adds(s_p, mask(bank_mask_p.v[r], conflicts.v[r]));
928
929
930 [FILE:225:patches/patch-src_intel_isl_isl.h]
931 --- src/intel/isl/isl.h.orig    2018-06-15 20:37:48 UTC
932 +++ src/intel/isl/isl.h
933 @@ -46,6 +46,9 @@
934  #include "util/macros.h"
935  
936  #ifdef __cplusplus
937 +# ifdef __sun__
938 +# define restrict      __restrict__
939 +# endif
940  extern "C" {
941  #endif
942  
943
944
945 [FILE:302:patches/patch-src_intel_tools_aubinator__error__decode.c]
946 # expose getline in FreeBSD's stdio.h
947 #
948 --- src/intel/tools/aubinator_error_decode.c.orig       2018-06-15 20:37:48 UTC
949 +++ src/intel/tools/aubinator_error_decode.c
950 @@ -22,6 +22,9 @@
951   *
952   */
953  
954 +#ifdef __FreeBSD__
955 +#define _WITH_GETLINE
956 +#endif
957  #include <stdbool.h>
958  #include <stdio.h>
959  #include <stdlib.h>
960
961
962 [FILE:619:patches/patch-src_mapi_glapi_gen_gl__gentable.py]
963 --- src/mapi/glapi/gen/gl_gentable.py.orig      2018-06-15 20:37:48 UTC
964 +++ src/mapi/glapi/gen/gl_gentable.py
965 @@ -43,7 +43,7 @@ header = """/* GLXEXT is the define used
966  #endif
967  
968  #if (defined(GLXEXT) && defined(HAVE_BACKTRACE)) \\
969 -       || (!defined(GLXEXT) && defined(DEBUG) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__))
970 +       || (!defined(GLXEXT) && defined(DEBUG) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__DragonFly__))
971  #define USE_BACKTRACE
972  #endif
973  
974
975
976 [FILE:425:patches/patch-src_mesa_drivers_dri_i965_brw__bufmgr.c]
977 --- src/mesa/drivers/dri/i965/brw_bufmgr.c.orig 2018-06-15 20:37:48 UTC
978 +++ src/mesa/drivers/dri/i965/brw_bufmgr.c
979 @@ -74,6 +74,10 @@
980  #define VG(x)
981  #endif
982  
983 +#ifndef O_CLOEXEC
984 +#define O_CLOEXEC      0
985 +#endif
986 +
987  /* VALGRIND_FREELIKE_BLOCK unfortunately does not actually undo the earlier
988   * VALGRIND_MALLOCLIKE_BLOCK but instead leaves vg convinced the memory is
989   * leaked. All because it does not call VG(cli_free) from its
990
991
992 [FILE:1350:patches/patch-src_mesa_drivers_dri_i965_brw__performance__query.c]
993 --- src/mesa/drivers/dri/i965/brw_performance_query.c.orig      2018-06-15 20:37:48 UTC
994 +++ src/mesa/drivers/dri/i965/brw_performance_query.c
995 @@ -1806,9 +1806,17 @@ enumerate_sysfs_metrics(struct brw_conte
996     while ((metric_entry = readdir(metricsdir))) {
997        struct hash_entry *entry;
998  
999 +#ifdef __sun__
1000 +      struct stat entry_stat;
1001 +
1002 +      lstat(metric_entry->d_name, &entry_stat);
1003 +      if ((!S_ISDIR(entry_stat.st_mode) && !S_ISLNK(entry_stat.st_mode)) ||
1004 +          metric_entry->d_name[0] == '.') 
1005 +#else
1006        if ((metric_entry->d_type != DT_DIR &&
1007             metric_entry->d_type != DT_LNK) ||
1008            metric_entry->d_name[0] == '.')
1009 +#endif
1010           continue;
1011  
1012        DBG("metric set: %s\n", metric_entry->d_name);
1013 @@ -2082,9 +2090,17 @@ get_sysfs_dev_dir(struct brw_context *br
1014     }
1015  
1016     while ((drm_entry = readdir(drmdir))) {
1017 +#ifdef __sun__
1018 +      struct stat drm_stat;
1019 +
1020 +      lstat(drm_entry->d_name, &drm_stat);
1021 +      if ((S_ISDIR(drm_stat.st_mode) || S_ISLNK(drm_stat.st_mode)) &&
1022 +          strncmp(drm_entry->d_name, "card", 4) == 0)
1023 +#else
1024        if ((drm_entry->d_type == DT_DIR ||
1025             drm_entry->d_type == DT_LNK) &&
1026            strncmp(drm_entry->d_name, "card", 4) == 0)
1027 +#endif
1028        {
1029           len = snprintf(brw->perfquery.sysfs_dev_dir,
1030                          sizeof(brw->perfquery.sysfs_dev_dir),
1031
1032
1033 [FILE:406:patches/patch-src_mesa_main_compiler.h]
1034 --- src/mesa/main/compiler.h.orig       2018-06-15 20:37:48 UTC
1035 +++ src/mesa/main/compiler.h
1036 @@ -51,6 +51,9 @@
1037  #if defined(__linux__)
1038  #include <byteswap.h>
1039  #define CPU_TO_LE32( x )       bswap_32( x )
1040 +#elif defined(__FreeBSD__)
1041 +#include <sys/endian.h>
1042 +#define CPU_TO_LE32( x )       bswap32( x )
1043  #elif defined(__APPLE__)
1044  #include <CoreFoundation/CFByteOrder.h>
1045  #define CPU_TO_LE32( x )       CFSwapInt32HostToLittle( x )
1046
1047
1048 [FILE:377:patches/patch-src_util_build__id.c]
1049 # Elf_ doesn't exist, use Elf32_ or Elf64_
1050 #
1051 --- src/util/build_id.c.orig    2018-06-15 20:37:48 UTC
1052 +++ src/util/build_id.c
1053 @@ -34,7 +34,11 @@
1054  #endif
1055  
1056  #ifndef ElfW
1057 -#define ElfW(type) Elf_##type
1058 +#ifdef __LP64__
1059 +#define ElfW(type) Elf64_##type
1060 +#else
1061 +#define ElfW(type) Elf32_##type
1062 +#endif
1063  #endif
1064  
1065  #define ALIGN(val, align)      (((val) + (align) - 1) & ~((align) - 1))
1066
1067
1068 [FILE:649:patches/patch-src_util_disk__cache.c]
1069 --- src/util/disk_cache.c.orig  2018-06-15 20:37:48 UTC
1070 +++ src/util/disk_cache.c
1071 @@ -51,6 +51,10 @@
1072  
1073  #include "disk_cache.h"
1074  
1075 +#ifndef O_CLOEXEC
1076 +#define O_CLOEXEC      0
1077 +#endif
1078 +
1079  /* Number of bits to mask off from a cache key to get an index. */
1080  #define CACHE_INDEX_KEY_BITS 16
1081  
1082 @@ -513,7 +517,11 @@ choose_lru_file_matching(const char *dir
1083           break;
1084  
1085        struct stat sb;
1086 +#ifdef __sun__
1087 +      if (fstatat(dir->dd_fd, entry->d_name, &sb, 0) == 0) {
1088 +#else
1089        if (fstatat(dirfd(dir), entry->d_name, &sb, 0) == 0) {
1090 +#endif
1091           if (!lru_atime || (sb.st_atime < lru_atime)) {
1092              size_t len = strlen(entry->d_name);
1093  
1094
1095
1096 [FILE:1462:patches/patch-src_util_futex.h]
1097 - Implement futex_wake() and futex_wait() via _umtx_op()
1098
1099 --- src/util/futex.h.orig       2018-06-15 20:37:48 UTC
1100 +++ src/util/futex.h
1101 @@ -29,10 +29,35 @@
1102  #include <limits.h>
1103  #include <stdint.h>
1104  #include <unistd.h>
1105 +#if defined(__FreeBSD__)
1106 +#include <errno.h>
1107 +# if __FreeBSD__ < 11
1108 +#  include <machine/atomic.h>
1109 +# endif
1110 +#include <sys/umtx.h>
1111 +#else
1112  #include <linux/futex.h>
1113  #include <sys/syscall.h>
1114 +#endif
1115  #include <sys/time.h>
1116  
1117 +#if defined(__FreeBSD__)
1118 +static inline int futex_wake(uint32_t *addr, int count)
1119 +{
1120 +   return _umtx_op(addr, UMTX_OP_WAKE, (uint32_t)count, NULL, NULL) == -1 ? errno : 0;
1121 +}
1122 +
1123 +static inline int futex_wait(uint32_t *addr, int32_t value, struct timespec *timeout)
1124 +{
1125 +   void *uaddr = NULL, *uaddr2 = NULL;
1126 +   if (timeout != NULL) {
1127 +      const struct _umtx_time tmo = { ._timeout = *timeout, ._flags = UMTX_ABSTIME, ._clockid = CLOCK_MONOTONIC };
1128 +      uaddr = (void *)(uintptr_t)sizeof(tmo);
1129 +      uaddr2 = (void *)&tmo;
1130 +   }
1131 +   return _umtx_op(addr, UMTX_OP_WAIT_UINT, (uint32_t)value, uaddr, uaddr2) == -1 ? errno : 0;
1132 +}
1133 +#else
1134  static inline long sys_futex(void *addr1, int op, int val1, const struct timespec *timeout, void *addr2, int val3)
1135  {
1136     return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3);
1137 @@ -50,6 +75,7 @@ static inline int futex_wait(uint32_t *a
1138     return sys_futex(addr, FUTEX_WAIT_BITSET, value, timeout, NULL,
1139                      FUTEX_BITSET_MATCH_ANY);
1140  }
1141 +#endif
1142  
1143  #endif
1144  
1145
1146
1147 [FILE:360:patches/patch-src_util_os__time.c]
1148 - Use monotonic clock for timeouts
1149
1150 --- src/util/os_time.c.orig     2018-06-15 20:37:48 UTC
1151 +++ src/util/os_time.c
1152 @@ -95,7 +95,7 @@ os_time_get_nano(void)
1153  void
1154  os_time_sleep(int64_t usecs)
1155  {
1156 -#if defined(PIPE_OS_LINUX)
1157 +#if defined(HAVE_CLOCK_NANOSLEEP)
1158     struct timespec time;
1159     time.tv_sec = usecs / 1000000;
1160     time.tv_nsec = (usecs % 1000000) * 1000;
1161
1162
1163 [FILE:430:patches/patch-src_util_u__atomic.h]
1164 --- src/util/u_atomic.h.orig    2018-06-15 20:37:48 UTC
1165 +++ src/util/u_atomic.h
1166 @@ -20,11 +20,7 @@
1167   * locally coded assembly, compiler intrinsic or ultimately a
1168   * mutex-based implementation.
1169   */
1170 -#if defined(__sun)
1171 -#define PIPE_ATOMIC_OS_SOLARIS
1172 -#elif defined(_MSC_VER)
1173 -#define PIPE_ATOMIC_MSVC_INTRINSIC
1174 -#elif defined(__GNUC__)
1175 +#if defined(__GNUC__)
1176  #define PIPE_ATOMIC_GCC_INTRINSIC
1177  #else
1178  #error "Unsupported platform"
1179
1180
1181 [FILE:1162:patches/patch-src_util_u__thread.h]
1182 - Implement setting thread name
1183 - Use monotonic clock for timeouts
1184
1185 --- src/util/u_thread.h.orig    2018-06-15 20:37:48 UTC
1186 +++ src/util/u_thread.h
1187 @@ -34,6 +34,10 @@
1188  
1189  #ifdef HAVE_PTHREAD
1190  #include <signal.h>
1191 +#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__OpenBSD__)
1192 +#include <pthread_np.h>
1193 +#undef ALIGN /* Avoid conflict on FreeBSD in main/macros.h */
1194 +#endif
1195  #endif
1196  
1197  
1198 @@ -65,6 +69,12 @@ static inline void u_thread_setname( con
1199        (__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 12)) && \
1200        defined(__linux__)
1201     pthread_setname_np(pthread_self(), name);
1202 +#  elif defined(__sun)
1203 +   pthread_setname_np(pthread_self(), name);
1204 +#  elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__OpenBSD__)
1205 +   pthread_set_name_np(pthread_self(), name);
1206 +#  elif defined(__NetBSD__)
1207 +   pthread_setname_np(pthread_self(), "%s", (void*)name);
1208  #  endif
1209  #endif
1210     (void)name;
1211 @@ -78,7 +88,7 @@ static inline void u_thread_setname( con
1212  static inline int64_t
1213  u_thread_get_time_nano(thrd_t thread)
1214  {
1215 -#if defined(__linux__) && defined(HAVE_PTHREAD)
1216 +#if defined(HAVE_PTHREAD)
1217     struct timespec ts;
1218     clockid_t cid;
1219  
1220
1221
1222 [FILE:47:files/special.mk]
1223 DRI_DRIVERS+=           SWRAST
1224 GALLIUM_DRIVERS+=       SWRAST
1225
1226
1227 [FILE:684:dragonfly/patch-src_intel_tools_aubinator.c]
1228 # We don't have MAP_NORESERVE so use MAP_NOSYNC | MAP_NOCORE and
1229 # hope for the best (this alloc is too big but it's only a test)
1230 #
1231 --- src/intel/tools/aubinator.c.orig    2018-06-15 20:37:48 UTC
1232 +++ src/intel/tools/aubinator.c
1233 @@ -633,7 +633,7 @@ int main(int argc, char *argv[])
1234     /* mmap a terabyte for our gtt space. */
1235     gtt_size = 1ull << 40;
1236     gtt = mmap(NULL, gtt_size, PROT_READ | PROT_WRITE,
1237 -              MAP_PRIVATE | MAP_ANONYMOUS |  MAP_NORESERVE, -1, 0);
1238 +              MAP_PRIVATE | MAP_ANONYMOUS | MAP_NOSYNC | MAP_NOCORE, -1, 0);
1239     if (gtt == MAP_FAILED) {
1240        fprintf(stderr, "failed to alloc gtt space: %s\n", strerror(errno));
1241        exit(EXIT_FAILURE);
1242
1243
1244 [FILE:684:freebsd/patch-src_intel_tools_aubinator.c]
1245 # We don't have MAP_NORESERVE so use MAP_NOSYNC | MAP_NOCORE and
1246 # hope for the best (this alloc is too big but it's only a test)
1247 #
1248 --- src/intel/tools/aubinator.c.orig    2018-06-15 20:37:48 UTC
1249 +++ src/intel/tools/aubinator.c
1250 @@ -633,7 +633,7 @@ int main(int argc, char *argv[])
1251     /* mmap a terabyte for our gtt space. */
1252     gtt_size = 1ull << 40;
1253     gtt = mmap(NULL, gtt_size, PROT_READ | PROT_WRITE,
1254 -              MAP_PRIVATE | MAP_ANONYMOUS |  MAP_NORESERVE, -1, 0);
1255 +              MAP_PRIVATE | MAP_ANONYMOUS | MAP_NOSYNC | MAP_NOCORE, -1, 0);
1256     if (gtt == MAP_FAILED) {
1257        fprintf(stderr, "failed to alloc gtt space: %s\n", strerror(errno));
1258        exit(EXIT_FAILURE);
1259
1260
1261 [FILE:722:sunos/patch-src_amd_Makefile.in]
1262 --- src/amd/Makefile.in.orig    2018-01-18 21:30:38 UTC
1263 +++ src/amd/Makefile.in
1264 @@ -332,7 +332,7 @@ CCAS = @CCAS@
1265  CCASDEPMODE = @CCASDEPMODE@
1266  CCASFLAGS = @CCASFLAGS@
1267  CCDEPMODE = @CCDEPMODE@
1268 -CFLAGS = @CFLAGS@
1269 +CFLAGS = @CFLAGS@ -I$(prefix)/include/bsd
1270  CLANG_RESOURCE_DIR = @CLANG_RESOURCE_DIR@
1271  CLOCK_LIB = @CLOCK_LIB@
1272  CLOVER_STD_OVERRIDE = @CLOVER_STD_OVERRIDE@
1273 @@ -739,7 +739,7 @@ addrlib_libamdgpu_addrlib_la_SOURCES = $
1274  @HAVE_GALLIUM_LLVM_TRUE@       $(AMD_GENERATED_FILES) \
1275  @HAVE_GALLIUM_LLVM_TRUE@       $(AMD_NIR_FILES)
1276  
1277 -common_libamd_common_la_LIBADD = $(LIBELF_LIBS)
1278 +common_libamd_common_la_LIBADD = $(LIBELF_LIBS) -lbsd
1279  BUILT_SOURCES = $(AMD_GENERATED_FILES)
1280  all: $(BUILT_SOURCES)
1281         $(MAKE) $(AM_MAKEFLAGS) all-am
1282
1283
1284 [FILE:360:sunos/patch-src_compiler_Makefile.in]
1285 --- src/compiler/Makefile.in.orig       2018-01-18 21:30:39 UTC
1286 +++ src/compiler/Makefile.in
1287 @@ -731,7 +731,7 @@ CLANG_RESOURCE_DIR = @CLANG_RESOURCE_DIR
1288  CLOCK_LIB = @CLOCK_LIB@
1289  CLOVER_STD_OVERRIDE = @CLOVER_STD_OVERRIDE@
1290  CPP = @CPP@
1291 -CPPFLAGS = @CPPFLAGS@
1292 +CPPFLAGS = @CPPFLAGS@ -I$(prefix)/include/bsd
1293  CXX = @CXX@
1294  CXXCPP = @CXXCPP@
1295  CXXDEPMODE = @CXXDEPMODE@
1296
1297
1298 [FILE:343:sunos/patch-src_intel_Makefile.in]
1299 --- src/intel/Makefile.in.orig  2018-02-07 05:00:00 UTC
1300 +++ src/intel/Makefile.in
1301 @@ -1983,7 +1983,7 @@ tools_aubinator_error_decode_LDADD = \
1302  
1303  tools_aubinator_error_decode_CFLAGS = \
1304         $(AM_CFLAGS) \
1305 -       $(ZLIB_CFLAGS)
1306 +       $(ZLIB_CFLAGS) -I$(prefix)/include/bsd
1307  
1308  
1309  # Due to a what seems like a autoconf bug, we must ensure that the genaration
1310
1311
1312 [FILE:760:sunos/patch-src_mesa_drivers_dri_common_Makefile.in]
1313 --- src/mesa/drivers/dri/common/Makefile.in.orig        2018-01-18 21:30:42 UTC
1314 +++ src/mesa/drivers/dri/common/Makefile.in
1315 @@ -138,7 +138,7 @@ AM_V_lt = $(am__v_lt_@AM_V@)
1316  am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
1317  am__v_lt_0 = --silent
1318  am__v_lt_1 = 
1319 -libmegadriver_stub_la_LIBADD =
1320 +libmegadriver_stub_la_LIBADD = -lbsd
1321  am__objects_2 = megadriver_stub.lo
1322  am_libmegadriver_stub_la_OBJECTS = $(am__objects_2)
1323  libmegadriver_stub_la_OBJECTS = $(am_libmegadriver_stub_la_OBJECTS)
1324 @@ -224,7 +224,7 @@ CCAS = @CCAS@
1325  CCASDEPMODE = @CCASDEPMODE@
1326  CCASFLAGS = @CCASFLAGS@
1327  CCDEPMODE = @CCDEPMODE@
1328 -CFLAGS = @CFLAGS@
1329 +CFLAGS = @CFLAGS@ -I$(prefix)/include/bsd
1330  CLANG_RESOURCE_DIR = @CLANG_RESOURCE_DIR@
1331  CLOCK_LIB = @CLOCK_LIB@
1332  CLOVER_STD_OVERRIDE = @CLOVER_STD_OVERRIDE@
1333
1334
1335 [FILE:927:sunos/patch-src_util_Makefile.in]
1336 --- src/util/Makefile.in.orig   2018-01-18 21:30:42 UTC
1337 +++ src/util/Makefile.in
1338 @@ -865,6 +865,7 @@ libmesautil_la_CPPFLAGS = \
1339         -I$(top_srcdir)/src/mesa \
1340         -I$(top_srcdir)/src/gallium/include \
1341         -I$(top_srcdir)/src/gallium/auxiliary \
1342 +       -I$(prefix)/include/bsd \
1343         $(VISIBILITY_CFLAGS) \
1344         $(MSVC2013_COMPAT_CFLAGS) \
1345         $(ZLIB_CFLAGS)
1346 @@ -876,18 +877,19 @@ libmesautil_la_SOURCES = \
1347  libmesautil_la_LIBADD = \
1348         $(CLOCK_LIB) \
1349         $(ZLIB_LIBS) \
1350 -       $(LIBATOMIC_LIBS)
1351 +       $(LIBATOMIC_LIBS) -lbsd
1352  
1353  libxmlconfig_la_SOURCES = $(XMLCONFIG_FILES)
1354  libxmlconfig_la_CFLAGS = \
1355         $(DEFINES) \
1356         -I$(top_srcdir)/include \
1357         -I$(top_srcdir)/src \
1358 +       -I$(prefix)/include/bsd \
1359         -DSYSCONFDIR=\"$(sysconfdir)\" \
1360         $(VISIBILITY_CFLAGS) \
1361         $(EXPAT_CFLAGS)
1362  
1363 -libxmlconfig_la_LIBADD = $(EXPAT_LIBS) -lm
1364 +libxmlconfig_la_LIBADD = $(EXPAT_LIBS) -lm -lbsd
1365  sysconf_DATA = drirc
1366  u_atomic_test_LDADD = libmesautil.la
1367  roundeven_test_LDADD = -lm
1368