Ravenports generated: 16 Dec 2017 17:56
[ravenports.git] / bucket_F0 / mesa
1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
2
3 NAMEBASE=               mesa
4 VERSION=                17.2.7
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                         https://mesa.freedesktop.org/archive/17.2.7/
14                         ftp://ftp.freedesktop.org/pub/mesa/17.2.7/
15 DISTFILE[1]=            mesa-17.2.7.tar.xz:main
16 DF_INDEX=               1
17 SPKGS[standard]=        complete
18                         libs
19                         clover
20                         drivers
21                         osmesa
22
23 OPTIONS_AVAILABLE=      X86_DRIVERS ARM_DRIVERS
24 OPTIONS_STANDARD=       X86_DRIVERS ARM_DRIVERS
25 OPT_ON[aarch64]=        ARM_DRIVERS
26 OPT_ON[x86_64]=         X86_DRIVERS
27 OPT_ON[i386]=           X86_DRIVERS
28
29 BUILD_DEPENDS=          libpthread-stubs:single:standard
30                         libclc:single:standard
31                         llvm40:llvm:standard
32                         llvm40:clang:standard
33                         zlib:complete:standard
34                         libelf:single:standard
35                         libvdpau:single:standard
36                         libva:single:standard
37                         expat:static:standard
38 BUILDRUN_DEPENDS=       expat:shared:standard
39                         libdrm:single:standard
40                         ocl-icd:primary:standard
41                         opencl: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=        dri2proto dri3proto glproto presentproto x11 xcb
59                         xdamage xext xfixes xshmfence xxf86vm xv xvmc
60
61 FPC_EQUIVALENT=         graphics/mesa-libs
62 SHEBANG_FILES=          src/gallium/*/*/*.py
63                         src/gallium/tools/trace/*.py
64                         src/gallium/drivers/svga/svgadump/svga_dump.py
65                         src/mapi/glapi/gen/*.py
66                         src/mapi/mapi_abi.py
67                         src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py
68                         src/mesa/main/get_*.py
69                         src/util/format_srgb.py
70                         src/amd/*/*.py
71                         src/intel/genxml/gen_pack_header.py
72 SHEBANG_OLD_PYTHON=     /usr/bin/env[[:space:]]python2
73                         /usr/bin/python2
74                         /bin/env[[:space:]]python
75
76 MUST_CONFIGURE=         gnu
77 CONFIGURE_ARGS=         --enable-llvm
78                         --enable-texture-float
79                         --enable-vdpau
80                         --enable-va
81                         --enable-xvmc
82                         --disable-glx-tls
83                         --disable-gles1
84                         --disable-libunwind
85                         --with-platforms=x11,drm
86                         --enable-gallium-osmesa
87                         --with-llvm-prefix={{LOCALBASE}}/llvm40
88                         --with-dri-drivers="{{DRI_DRIVERS:tl}}"
89                         --with-gallium_drivers="{{GALLIUM_DRIVERS:tl}}"
90
91 INSTALL_TARGET=         install-strip
92 INSTALL_REQ_TOOLCHAIN=  yes
93
94 LDFLAGS=                -Wl,-rpath={{LOCALBASE}}/llvm40/lib
95
96 [ARM_DRIVERS].DESCRIPTION=              Build drivers for aarch64 architecture
97 [ARM_DRIVERS].MAKEFILE_ON=              GALLIUM_DRIVERS+=FREEDRENO
98                                         GALLIUM_DRIVERS+=VC4
99
100 [X86_DRIVERS].DESCRIPTION=              Build drivers for i386 and x86_64 architectures
101 [X86_DRIVERS].CONFIGURE_ENABLE_BOTH=    opencl
102                                         opencl-icd
103 [X86_DRIVERS].MAKEFILE_ON=              DRI_DRIVERS+=RADEON
104                                         DRI_DRIVERS+=R200
105                                         DRI_DRIVERS+=I915
106                                         DRI_DRIVERS+=I965
107                                         GALLIUM_DRIVERS+=R300
108                                         GALLIUM_DRIVERS+=R600
109                                         GALLIUM_DRIVERS+=RADEONSI
110                                         GALLIUM_DRIVERS+=SVGA
111
112 post-patch:
113         @${REINPLACE_CMD} -e 's|/etc/|${PREFIX}/etc/|g' \
114                 ${WRKSRC}/src/mesa/drivers/dri/common/xmlconfig.c
115
116 post-patch-freebsd:
117         @${REINPLACE_CMD} -e 's|x86_64|amd64|' ${WRKSRC}/configure
118
119 [FILE:808:descriptions/desc.libs]
120 The Mesa project began as an open-source implementation of the OpenGL
121 specification - a system for rendering interactive 3D graphics.
122
123 Over the years the project has grown to implement more graphics APIs,
124 including OpenGL ES (versions 1, 2, 3), OpenCL, OpenMAX, VDPAU, VA API,
125 XvMC and Vulkan.
126
127 A variety of device drivers allows the Mesa libraries to be used in many
128 different environments ranging from software emulation to complete
129 hardware acceleration for modern GPUs.
130
131 Mesa ties into several other open-source projects: the Direct Rendering
132 Infrastructure and X.org to provide OpenGL support on Linux, FreeBSD
133 and other operating systems.
134
135 This package contains the Mesa OpenGL libraries for GLX and EGL clients.
136 These include libEGL, libGL, and libglesv2 as well as utlity libraries
137 libglapi and gbm.
138
139
140 [FILE:130:descriptions/desc.clover]
141 This package contains Mesa's libOpenCL implementation "Clover".
142 It is built upon GALLIUM and currently only supports Radeon GPUs.
143
144
145 [FILE:162:descriptions/desc.drivers]
146 This package contains the Mesa OpenGL libraries for GLX and EGL clients.
147 These include libEGL, libGL, and libglesv2 as well as utlity libraries
148 libglapi and gbm.
149
150
151 [FILE:591:descriptions/desc.osmesa]
152 Mesa is a 3-D graphics library with an API which is very similar to that
153 of OpenGL*.  To the extent that Mesa utilizes the OpenGL command syntax or
154 state machine, it is being used with authorization from Silicon Graphics,
155 Inc.  However, the author makes no claim that Mesa is in any way a
156 compatible replacement for OpenGL or associated with Silicon Graphics, Inc.
157
158 This is a Off-Screen version of Mesa in order to do off-screen rendering in
159 other packages like VTK. Offscreen rendering is useful for a
160 number of things, such as batch processing, parallel processing, and
161 remote processing.
162
163
164 [FILE:97:distinfo]
165 50cfdea8df55045797b4d0409591c04c784d9551c4da09b8178874dbe5a37a68     10353448 mesa-17.2.7.tar.xz
166
167
168 [FILE:721:manifests/plist.libs]
169 include/EGL/
170  egl.h
171  eglext.h
172  eglextchromium.h
173  eglmesaext.h
174  eglplatform.h
175 include/GL/
176  gl.h
177  gl_mangle.h
178  glcorearb.h
179  glext.h
180  glx.h
181  glx_mangle.h
182  glxext.h
183 include/GLES2/
184  gl2.h
185  gl2ext.h
186  gl2platform.h
187 include/GLES3/
188  gl3.h
189  gl31.h
190  gl32.h
191  gl3ext.h
192  gl3platform.h
193 include/KHR/khrplatform.h
194 include/gbm.h
195 lib/
196  libEGL.so
197  libEGL.so.1
198  libEGL.so.1.0.0
199  libGL.so
200  libGL.so.1
201  libGL.so.1.2.0
202  libGLESv2.so
203  libGLESv2.so.2
204  libGLESv2.so.2.0.0
205  libgbm.so
206  libgbm.so.1
207  libgbm.so.1.0.0
208  libglapi.so
209  libglapi.so.0
210  libglapi.so.0.0.0
211 @comment lib/libwayland-egl.so
212 @comment lib/libwayland-egl.so.1
213 @comment lib/libwayland-egl.so.1.0.0
214 lib/pkgconfig/
215  egl.pc
216  gbm.pc
217  gl.pc
218  glesv2.pc
219 @comment lib/pkgconfig/wayland-egl.pc
220
221
222 [FILE:245:manifests/plist.clover]
223 %%X86_DRIVERS-ON%%etc/OpenCL/vendors/mesa.icd
224 %%X86_DRIVERS-ON%%lib/gallium-pipe/
225  pipe_r300.so
226  pipe_r600.so
227  pipe_radeonsi.so
228  pipe_swrast.so
229  pipe_vmwgfx.so
230 %%X86_DRIVERS-ON%%lib/
231  libMesaOpenCL.so
232  libMesaOpenCL.so.1
233  libMesaOpenCL.so.1.0.0
234
235
236 [FILE:868:manifests/plist.drivers]
237 etc/drirc
238 include/GL/internal/dri_interface.h
239 %%X86_DRIVERS-ON%%lib/dri/
240  i915_dri.so
241  i965_dri.so
242 %%ARM_DRIVERS-ON%%lib/dri/
243  kgsl_dri.so
244 lib/dri/
245  kms_swrast_dri.so
246 %%ARM_DRIVERS-ON%%lib/dri/
247  msm_dri.so
248 %%X86_DRIVERS-ON%%lib/dri/
249  r200_dri.so
250  r300_dri.so
251  r600_dri.so
252  r600_drv_video.so
253  radeon_dri.so
254  radeonsi_dri.so
255  radeonsi_drv_video.so
256 lib/dri/
257  swrast_dri.so
258 %%ARM_DRIVERS-ON%%lib/dri/
259  vc4_dri.so
260 %%X86_DRIVERS-ON%%lib/dri/
261  vmwgfx_dri.so
262 %%X86_DRIVERS-ON%%lib/
263  libXvMCr600.so
264  libXvMCr600.so.1
265  libXvMCr600.so.1.0
266  libXvMCr600.so.1.0.0
267 %%X86_DRIVERS-ON%%lib/vdpau/
268  libvdpau_r300.so
269  libvdpau_r300.so.1
270  libvdpau_r300.so.1.0
271  libvdpau_r300.so.1.0.0
272  libvdpau_r600.so
273  libvdpau_r600.so.1
274  libvdpau_r600.so.1.0
275  libvdpau_r600.so.1.0.0
276  libvdpau_radeonsi.so
277  libvdpau_radeonsi.so.1
278  libvdpau_radeonsi.so.1.0
279  libvdpau_radeonsi.so.1.0.0
280 lib/pkgconfig/dri.pc
281
282
283 [FILE:99:manifests/plist.osmesa]
284 include/GL/osmesa.h
285 lib/
286  libOSMesa.so
287  libOSMesa.so.8
288  libOSMesa.so.8.0.0
289 lib/pkgconfig/osmesa.pc
290
291
292 [FILE:1408:patches/patch-configure]
293 --- configure.orig      2017-09-04 17:20:37 UTC
294 +++ configure
295 @@ -22746,7 +22746,7 @@ fi
296  
297  
298  case "$host_os" in
299 -linux*)
300 +linux* | freebsd* | dragonfly*)
301      dri3_default=yes
302      ;;
303  *)
304 @@ -26299,9 +26299,19 @@ if test "x$enable_opencl" = xyes; then
305          as_fn_error $? "cannot enable OpenCL without Gallium" "$LINENO" 5
306      fi
307  
308 +    if test "x$acv_mesa_CLANG" = xno; then
309 +
310 +    GCC_VERSION=`$CC -dumpversion`
311 +    if test $? -eq 0; then
312 +        GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
313 +        GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
314 +    fi
315 +
316      if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
317          as_fn_error $? "gcc >= 4.7 is required to build clover" "$LINENO" 5
318      fi
319 +# end of clang test.
320 +    fi
321  
322      if test "x$have_libclc" = xno; then
323          as_fn_error $? "pkg-config cannot find libclc.pc which is required to build clover.
324 @@ -26364,9 +26374,6 @@ rm -f core conftest.err conftest.$ac_obj
325          CLANG_LIBDIR=${LLVM_LIBDIR}
326      fi
327      CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
328 -    if test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"; then :
329 -  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
330 -fi
331  fi
332   if test "x$enable_opencl" = xyes; then
333    HAVE_CLOVER_TRUE=
334
335
336 [FILE:529:patches/patch-include_GL_internal_dri__interface.h]
337 GCC on 9.x doesn't allow types to be overwritten, these types are defined
338 in drm.h also, which causes build issues in xorg-server.
339
340 --- include/GL/internal/dri_interface.h.orig    2016-11-10 22:05:17 UTC
341 +++ include/GL/internal/dri_interface.h
342 @@ -40,13 +40,7 @@
343  #ifndef DRI_INTERFACE_H
344  #define DRI_INTERFACE_H
345  
346 -#ifdef HAVE_LIBDRM
347  #include <drm.h>
348 -#else
349 -typedef unsigned int drm_context_t;
350 -typedef unsigned int drm_drawable_t;
351 -typedef struct drm_clip_rect drm_clip_rect_t;
352 -#endif
353  
354  /**
355   * \name DRI interface structures
356
357
358 [FILE:596:patches/patch-src_egl_drivers_dri2_platform__x11.c]
359 # work-around for https://bugs.freedesktop.org/show_bug.cgi?id=100627
360 #
361 --- src/egl/drivers/dri2/platform_x11.c.orig    2017-09-04 17:20:31 UTC
362 +++ src/egl/drivers/dri2/platform_x11.c
363 @@ -1488,7 +1488,11 @@ dri2_initialize_x11(_EGLDriver *drv, _EG
364  
365     if (!getenv("LIBGL_ALWAYS_SOFTWARE")) {
366  #ifdef HAVE_DRI3
367 +#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && !defined (__DRM_NEXT__)
368 +      if (getenv("LIBGL_DRI3_ENABLE") && !getenv("LIBGL_DRI3_DISABLE"))
369 +#else
370        if (!getenv("LIBGL_DRI3_DISABLE"))
371 +#endif
372           initialized = dri2_initialize_x11_dri3(drv, disp);
373  #endif
374  
375
376
377 [FILE:3256:patches/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c]
378 Revert the following commit.
379
380 FreeBSD and DragonFly don't have the required render nodes.
381
382 -------
383
384 From 69a1b9959e59653da262185c4e2cf57d24939b19 Mon Sep 17 00:00:00 2001
385 From: Emil Velikov <emil.l.velikov@gmail.com>
386 Date: Mon, 29 Jun 2015 12:36:45 +0100
387 Subject: pipe-loader: drop support for non-render node devices
388
389 Render nodes have been around for quite some time. Removing support via
390 the master/primary node allows us to clean up the conditional
391 compilation and simplify the build greatly.
392
393 For example currently we the pipe-loader, which explicitly links against
394 xcb and friends (for X auth) if found at compile-time. That
395 would cause problems as one will be forced to use X/xcb, even if it's a
396 headless system that is used for opencl.
397
398 v2: Clarify the linking topic in the commit message.
399
400 Cc: Tom Stellard <thomas.stellard@amd.com>
401 Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
402 Reviewed-by: Francisco Jerez <currojerez@riseup.net>
403
404
405 --- src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c.orig    2017-09-04 17:20:31 UTC
406 +++ src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
407 @@ -214,6 +214,14 @@ pipe_loader_drm_probe_fd(struct pipe_loa
408  }
409  
410  static int
411 +open_drm_minor(int minor)
412 +{
413 +   char path[PATH_MAX];
414 +   snprintf(path, sizeof(path), DRM_DEV_NAME, DRM_DIR_NAME, minor);
415 +   return open(path, O_RDWR, 0);
416 +}
417 +
418 +static int
419  open_drm_render_node_minor(int minor)
420  {
421     char path[PATH_MAX];
422 @@ -225,8 +233,15 @@ open_drm_render_node_minor(int minor)
423  int
424  pipe_loader_drm_probe(struct pipe_loader_device **devs, int ndev)
425  {
426 -   int i, j, fd;
427 +   int i, k, fd, num_render_node_devs;
428 +   int j = 0;
429 +
430 +   struct {
431 +      unsigned vendor_id;
432 +      unsigned chip_id;
433 +   } render_node_devs[DRM_RENDER_NODE_MAX_NODES];
434  
435 +   /* Look for render nodes first */
436     for (i = DRM_RENDER_NODE_MIN_MINOR, j = 0;
437          i <= DRM_RENDER_NODE_MAX_MINOR; i++) {
438        struct pipe_loader_device *dev;
439 @@ -240,6 +255,9 @@ pipe_loader_drm_probe(struct pipe_loader
440           continue;
441        }
442  
443 +      render_node_devs[j].vendor_id = dev->u.pci.vendor_id;
444 +      render_node_devs[j].chip_id = dev->u.pci.chip_id;
445 +
446        if (j < ndev) {
447           devs[j] = dev;
448        } else {
449 @@ -249,6 +267,46 @@ pipe_loader_drm_probe(struct pipe_loader
450        j++;
451     }
452  
453 +   num_render_node_devs = j;
454 +
455 +   /* Next look for drm devices. */
456 +   for (i = 0; i < DRM_MAX_MINOR; i++) {
457 +      struct pipe_loader_device *dev;
458 +      boolean duplicate = FALSE;
459 +      fd = open_drm_minor(i);
460 +      if (fd < 0)
461 +         continue;
462 +
463 +      if (!pipe_loader_drm_probe_fd(&dev, fd)) {
464 +         close(fd);
465 +         continue;
466 +      }
467 +
468 +      /* Check to make sure we aren't already accessing this device via
469 +       * render nodes.
470 +       */
471 +      for (k = 0; k < num_render_node_devs; k++) {
472 +         if (dev->u.pci.vendor_id == render_node_devs[k].vendor_id &&
473 +             dev->u.pci.chip_id == render_node_devs[k].chip_id) {
474 +            close(fd);
475 +            dev->ops->release(&dev);
476 +            duplicate = TRUE;
477 +            break;
478 +         }
479 +      }
480 +
481 +      if (duplicate)
482 +         continue;
483 +
484 +      if (j < ndev) {
485 +         devs[j] = dev;
486 +      } else {
487 +         dev->ops->release(&dev);
488 +      }
489 +
490 +      j++;
491 +   }
492 +
493     return j;
494  }
495  
496
497
498 [FILE:504:patches/patch-src_gallium_auxiliary_util_u__network.c]
499 --- src/gallium/auxiliary/util/u_network.c.orig 2016-11-10 22:05:17 UTC
500 +++ src/gallium/auxiliary/util/u_network.c
501 @@ -6,7 +6,7 @@
502  #if defined(PIPE_SUBSYSTEM_WINDOWS_USER)
503  #  include <winsock2.h>
504  #  include <windows.h>
505 -#elif defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) || \
506 +#elif defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_HAIKU) || \
507     defined(PIPE_OS_APPLE) || defined(PIPE_OS_CYGWIN) || defined(PIPE_OS_SOLARIS)
508  #  include <sys/socket.h>
509  #  include <netinet/in.h>
510
511
512 [FILE:360:patches/patch-src_gallium_drivers_vc4_vc4__bufmgr.c]
513 # define ETIME as ETIMEOUT same as in intel driver
514 #
515 --- src/gallium/drivers/vc4/vc4_bufmgr.c.orig   2017-05-10 14:13:57 UTC
516 +++ src/gallium/drivers/vc4/vc4_bufmgr.c
517 @@ -27,6 +27,9 @@
518  #include <fcntl.h>
519  #include <xf86drm.h>
520  #include <xf86drmMode.h>
521 +#ifndef ETIME
522 +#define ETIME ETIMEDOUT
523 +#endif
524  
525  #include "util/u_hash_table.h"
526  #include "util/u_memory.h"
527
528
529 [FILE:1043:patches/patch-src_gallium_include_pipe_p__config.h]
530 --- src/gallium/include/pipe/p_config.h.orig    2017-09-04 17:20:31 UTC
531 +++ src/gallium/include/pipe/p_config.h
532 @@ -77,6 +77,13 @@
533  #define PIPE_CC_ICL
534  #endif
535  
536 +#if defined(__sparc__) || defined(__sparc64__)
537 +#define PIPE_ARCH_SPARC
538 +#if defined(__sparc64__)
539 +#define PIPE_ARCH_SPARC_64
540 +#endif
541 +#endif
542 +
543  
544  /*
545   * Processor architecture
546 @@ -131,7 +138,7 @@
547  
548  #if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) || defined(PIPE_ARCH_ARM) || defined(PIPE_ARCH_AARCH64)
549  #define PIPE_ARCH_LITTLE_ENDIAN
550 -#elif defined(PIPE_ARCH_PPC) || defined(PIPE_ARCH_PPC_64) || defined(PIPE_ARCH_S390)
551 +#elif defined(PIPE_ARCH_PPC) || defined(PIPE_ARCH_PPC_64) || defined(PIPE_ARCH_S390) || defined(PIPE_ARCH_SPARC) || defined(PIPE_ARCH_SPARC_64)
552  #define PIPE_ARCH_BIG_ENDIAN
553  #endif
554  
555 @@ -160,6 +167,12 @@
556  #define PIPE_OS_ANDROID
557  #endif
558  
559 +#if defined(__DragonFly__)
560 +#define PIPE_OS_DRAGONFLY
561 +#define PIPE_OS_BSD
562 +#define PIPE_OS_UNIX
563 +#endif
564 +
565  #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
566  #define PIPE_OS_FREEBSD
567  #define PIPE_OS_BSD
568
569
570 [FILE:1577:patches/patch-src_gallium_state__trackers_clover_llvm_invocation.cpp]
571 # fix errors like the following
572 #
573 # llvm/invocation.cpp:(.text+0x1275): undefined reference to `std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::c_str()
574  const'
575 # /usr/bin/ld: ../../../../src/gallium/state_trackers/clover/.libs/libclover.a(libclllvm_la-invocation.o): relocation R_X86_64_PC32 against `_ZNKSt3__112bas
576 ic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5c_strEv' can not be used when making a shared object; recompile with -fPIC
577 # /usr/bin/ld: final link failed: Bad value
578 #
579 --- src/gallium/state_trackers/clover/llvm/invocation.cpp.orig  2017-04-01 15:33:37 UTC
580 +++ src/gallium/state_trackers/clover/llvm/invocation.cpp
581 @@ -93,6 +93,8 @@ namespace {
582        return ctx;
583     }
584  
585 +   const char* cstr(const std::string& str) { return str.c_str(); }
586 +
587     std::unique_ptr<clang::CompilerInstance>
588     create_compiler_instance(const target &target,
589                              const std::vector<std::string> &opts,
590 @@ -105,8 +107,8 @@ namespace {
591        // Parse the compiler options.  A file name should be present at the end
592        // and must have the .cl extension in order for the CompilerInvocation
593        // class to recognize it as an OpenCL source file.
594 -      const std::vector<const char *> copts =
595 -         map(std::mem_fn(&std::string::c_str), opts);
596 +      std::vector<const char *> copts(opts.size());
597 +      std::transform(opts.begin(), opts.end(), copts.begin(), cstr);
598  
599        if (!clang::CompilerInvocation::CreateFromArgs(
600               c->getInvocation(), copts.data(), copts.data() + copts.size(), diag))
601
602
603 [FILE:635:patches/patch-src_gallium_state__trackers_clover_llvm_metadata.hpp]
604 # Fix error: no matching constructor for initialization of 'std::vector<const ::llvm::MDNode *>' 
605 #
606 --- src/gallium/state_trackers/clover/llvm/metadata.hpp.orig    2016-11-10 22:05:17 UTC
607 +++ src/gallium/state_trackers/clover/llvm/metadata.hpp
608 @@ -42,7 +42,7 @@ namespace clover {
609           get_kernel_nodes(const ::llvm::Module &mod) {
610              if (const ::llvm::NamedMDNode *n =
611                     mod.getNamedMetadata("opencl.kernels"))
612 -               return { n->op_begin(), n->op_end() };
613 +               return { n->getOperand(0), n->getOperand(n->getNumOperands()) };
614              else
615                 return {};
616           }
617
618
619 [FILE:1150:patches/patch-src_gallium_state__trackers_clover_util_range.hpp]
620 From b95533b981af9a6687b41418e7cc2a5652fc2bdb Mon Sep 17 00:00:00 2001
621 From: =?UTF-8?q?Jean-S=C3=A9bastien=20P=C3=A9dron?= <dumbbell@FreeBSD.org>
622 Date: Fri, 7 Mar 2014 15:16:08 +0100
623 Subject: [PATCH 3/3] Work around for clang 3.4 which fails to build Clover
624
625 See:
626   https://bugs.freedesktop.org/show_bug.cgi?id=74098#c3
627 --- src/gallium/state_trackers/clover/util/range.hpp.orig       2016-11-10 22:05:17 UTC
628 +++ src/gallium/state_trackers/clover/util/range.hpp
629 @@ -362,6 +362,12 @@ namespace clover {
630        return { i, i + n };
631     }
632  
633 +   namespace detail {
634 +      template<typename T>
635 +      using fixup_function_type =
636 +         typename std::conditional<std::is_function<T>::value, T &, T>::type;
637 +   }
638 +
639     ///
640     /// Create a range by transforming the contents of a number of
641     /// source ranges \a rs element-wise using a provided functor \a f.
642 @@ -369,7 +375,7 @@ namespace clover {
643     /// \sa adaptor_range.
644     ///
645     template<typename F, typename... Rs>
646 -   adaptor_range<F, Rs...>
647 +   adaptor_range<detail::fixup_function_type<F>, Rs...>
648     map(F &&f, Rs &&... rs) {
649        return { std::forward<F>(f), std::forward<Rs>(rs)... };
650     }
651
652
653 [FILE:429:patches/patch-src_gallium_winsys_svga_drm_vmw__screen__ioctl.c]
654 --- src/gallium/winsys/svga/drm/vmw_screen_ioctl.c.orig 2016-11-10 22:05:17 UTC
655 +++ src/gallium/winsys/svga/drm/vmw_screen_ioctl.c
656 @@ -70,6 +70,11 @@ vmw_region_size(struct vmw_region *regio
657     return region->size;
658  }
659  
660 +#if defined(__DragonFly__) || defined(__FreeBSD__) || \
661 +    defined(__NetBSD__) || defined(__OpenBSD__)
662 +#define ERESTART EINTR
663 +#endif
664 +
665  uint32
666  vmw_ioctl_context_create(struct vmw_winsys_screen *vws)
667  {
668
669
670 [FILE:633:patches/patch-src_glx_glxext.c]
671 # work-around for https://bugs.freedesktop.org/show_bug.cgi?id=100627
672 #
673 --- src/glx/glxext.c.orig       2017-04-01 15:33:37 UTC
674 +++ src/glx/glxext.c
675 @@ -906,7 +906,11 @@ __glXInitialize(Display * dpy)
676  #if defined(GLX_USE_DRM)
677     if (glx_direct && glx_accel) {
678  #if defined(HAVE_DRI3)
679 +#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && !defined (__DRM_NEXT__)
680 +      if (getenv("LIBGL_DRI3_ENABLE") && !getenv("LIBGL_DRI3_DISABLE"))
681 +#else
682        if (!getenv("LIBGL_DRI3_DISABLE"))
683 +#endif
684           dpyPriv->dri3Display = dri3_create_display(dpy);
685  #endif /* HAVE_DRI3 */
686        dpyPriv->dri2Display = dri2CreateDisplay(dpy);
687
688
689 [FILE:302:patches/patch-src_intel_tools_aubinator__error__decode.c]
690 # expose getline in FreeBSD's stdio.h
691 #
692 --- src/intel/tools/aubinator_error_decode.c.orig       2017-05-10 14:13:57 UTC
693 +++ src/intel/tools/aubinator_error_decode.c
694 @@ -22,6 +22,9 @@
695   *
696   */
697  
698 +#ifdef __FreeBSD__
699 +#define _WITH_GETLINE
700 +#endif
701  #include <stdbool.h>
702  #include <stdio.h>
703  #include <stdlib.h>
704
705
706 [FILE:619:patches/patch-src_mapi_glapi_gen_gl__gentable.py]
707 --- src/mapi/glapi/gen/gl_gentable.py.orig      2017-05-15 12:05:59 UTC
708 +++ src/mapi/glapi/gen/gl_gentable.py
709 @@ -43,7 +43,7 @@ header = """/* GLXEXT is the define used
710  #endif
711  
712  #if (defined(GLXEXT) && defined(HAVE_BACKTRACE)) \\
713 -       || (!defined(GLXEXT) && defined(DEBUG) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__))
714 +       || (!defined(GLXEXT) && defined(DEBUG) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__DragonFly__))
715  #define USE_BACKTRACE
716  #endif
717  
718
719
720 [FILE:406:patches/patch-src_mesa_main_compiler.h]
721 --- src/mesa/main/compiler.h.orig       2017-05-10 14:13:57 UTC
722 +++ src/mesa/main/compiler.h
723 @@ -51,6 +51,9 @@
724  #if defined(__linux__)
725  #include <byteswap.h>
726  #define CPU_TO_LE32( x )       bswap_32( x )
727 +#elif defined(__FreeBSD__)
728 +#include <sys/endian.h>
729 +#define CPU_TO_LE32( x )       bswap32( x )
730  #elif defined(__APPLE__)
731  #include <CoreFoundation/CFByteOrder.h>
732  #define CPU_TO_LE32( x )       CFSwapInt32HostToLittle( x )
733
734
735 [FILE:377:patches/patch-src_util_build__id.c]
736 # Elf_ doesn't exist, use Elf32_ or Elf64_
737 #
738 --- src/util/build_id.c.orig    2017-05-10 14:13:58 UTC
739 +++ src/util/build_id.c
740 @@ -33,7 +33,11 @@
741  #endif
742  
743  #ifndef ElfW
744 -#define ElfW(type) Elf_##type
745 +#ifdef __LP64__
746 +#define ElfW(type) Elf64_##type
747 +#else
748 +#define ElfW(type) Elf32_##type
749 +#endif
750  #endif
751  
752  #define ALIGN(val, align)      (((val) + (align) - 1) & ~((align) - 1))
753
754
755 [FILE:343:patches/patch-src_util_u__endian.h]
756 --- src/util/u_endian.h.orig    2016-11-10 22:05:17 UTC
757 +++ src/util/u_endian.h
758 @@ -54,7 +54,7 @@
759  # define PIPE_ARCH_BIG_ENDIAN
760  #endif
761  
762 -#elif defined(__OpenBSD__) || defined(__NetBSD__)
763 +#elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
764  #include <sys/types.h>
765  #include <machine/endian.h>
766  
767
768
769 [FILE:47:files/special.mk]
770 DRI_DRIVERS+=           SWRAST
771 GALLIUM_DRIVERS+=       SWRAST
772
773
774 [FILE:686:dragonfly/patch-src_intel_tools_aubinator.c]
775 # We don't have MAP_NORESERVE so use MAP_NOSYNC | MAP_NOCORE and
776 # hope for the best (this alloc is too big but it's only a test)
777 #
778 --- src/intel/tools/aubinator.c.orig    2017-09-04 17:20:31 UTC
779 +++ src/intel/tools/aubinator.c
780 @@ -1237,7 +1237,7 @@ int main(int argc, char *argv[])
781     /* mmap a terabyte for our gtt space. */
782     gtt_size = 1ull << 40;
783     gtt = mmap(NULL, gtt_size, PROT_READ | PROT_WRITE,
784 -              MAP_PRIVATE | MAP_ANONYMOUS |  MAP_NORESERVE, -1, 0);
785 +              MAP_PRIVATE | MAP_ANONYMOUS | MAP_NOSYNC | MAP_NOCORE, -1, 0);
786     if (gtt == MAP_FAILED) {
787        fprintf(stderr, "failed to alloc gtt space: %s\n", strerror(errno));
788        exit(EXIT_FAILURE);
789
790
791 [FILE:686:freebsd/patch-src_intel_tools_aubinator.c]
792 # We don't have MAP_NORESERVE so use MAP_NOSYNC | MAP_NOCORE and
793 # hope for the best (this alloc is too big but it's only a test)
794 #
795 --- src/intel/tools/aubinator.c.orig    2017-05-10 14:13:57 UTC
796 +++ src/intel/tools/aubinator.c
797 @@ -1221,7 +1221,7 @@ int main(int argc, char *argv[])
798     /* mmap a terabyte for our gtt space. */
799     gtt_size = 1ull << 40;
800     gtt = mmap(NULL, gtt_size, PROT_READ | PROT_WRITE,
801 -              MAP_PRIVATE | MAP_ANONYMOUS |  MAP_NORESERVE, -1, 0);
802 +              MAP_PRIVATE | MAP_ANONYMOUS | MAP_NOSYNC | MAP_NOCORE, -1, 0);
803     if (gtt == MAP_FAILED) {
804        fprintf(stderr, "failed to alloc gtt space: %s\n", strerror(errno));
805        exit(EXIT_FAILURE);
806