Skip to content

Instantly share code, notes, and snippets.

@SirToffski
Last active May 7, 2022 21:10
Show Gist options
  • Save SirToffski/37b5022a05ab8a62d9e26270912da7b7 to your computer and use it in GitHub Desktop.
Save SirToffski/37b5022a05ab8a62d9e26270912da7b7 to your computer and use it in GitHub Desktop.
Disclaimer
Mesa is a 3-D graphics library with an API which is very similar to
that of OpenGL*
To the extent that Mesa utilizes the OpenGL command syntax or state
machine, it is being used with authorization from Silicon Graphics,
Inc.(SGI). However, the author does not possess an OpenGL license
from SGI, and makes no claim that Mesa is in any way a compatible
replacement for OpenGL or associated with SGI. Those who want a
licensed implementation of OpenGL should contact a licensed
vendor.
Please do not refer to the library as MesaGL (for legal
reasons). It's just Mesa or The Mesa 3-D graphics
library
* OpenGL is a trademark of Silicon Graphics Incorporated.
License / Copyright Information
The Mesa distribution consists of several components. Different copyrights
and licenses apply to different components. For example, GLUT is copyrighted
by Mark Kilgard, some demo programs are copyrighted by SGI, some of the Mesa
device drivers are copyrighted by their authors. See below for a list of
Mesa's main components and the license for each.
The core Mesa library is licensed according to the terms of the MIT license.
This allows integration with the XFree86, Xorg and DRI projects.
The default Mesa license is as follows:
Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Attention, Contributors
When contributing to the Mesa project you must agree to the licensing terms
of the component to which you're contributing.
The following section lists the primary components of the Mesa distribution
and their respective licenses.
Mesa Component Licenses
Component Location Primary Author License
----------------------------------------------------------------------------
Main Mesa code src/mesa/ Brian Paul Mesa (MIT)
Device drivers src/mesa/drivers/* See drivers See drivers
Ext headers include/GL/glext.h SGI SGI Free B
include/GL/glxext.h
GLUT src/glut/ Mark Kilgard Mark's copyright
Mesa GLU library src/glu/mesa/ Brian Paul GNU-LGPL
SGI GLU library src/glu/sgi/ SGI SGI Free B
demo programs progs/demos/ various see source files
X demos progs/xdemos/ Brian Paul see source files
SGI demos progs/samples/ SGI SGI copyright
RedBook demos progs/redbook/ SGI SGI copyright
# Maintainer: Reza Jahanbakhshi <reza.jahanbakhshi at gmail dot com
# Contributor: Lone_Wolf <lone_wolf@klaas-de-kat.nl>
# Contributor: Armin K. <krejzi at email dot com>
# Contributor: Kristian Klausen <klausenbusk@hotmail.com>
# Contributor: Egon Ashrafinia <e.ashrafinia@gmail.com>
# Contributor: Tavian Barnes <tavianator@gmail.com>
# Contributor: Jan de Groot <jgc@archlinux.org>
# Contributor: Andreas Radke <andyrtr@archlinux.org>
# Contributor: Thomas Dziedzic < gostrc at gmail >
# Contributor: Antti "Tera" Oja <antti.bofh@gmail.com>
# Contributor: Diego Jose <diegoxter1006@gmail.com>
pkgname=mesa-git
pkgdesc="an open-source implementation of the OpenGL specification, git version"
pkgver=22.2.0_devel.153080.53fe6f10846.6aa0994e8686145503079d47a8bd2ae8
pkgrel=1
arch=('x86_64')
makedepends=('git' 'python-mako' 'xorgproto'
'libxml2' 'libx11' 'libvdpau' 'libva' 'elfutils' 'libxrandr'
'wayland-protocols' 'meson' 'ninja' 'glslang' 'libclc')
depends=('libdrm' 'libxxf86vm' 'libxdamage' 'libxshmfence' 'libelf'
'libomxil-bellagio' 'libunwind' 'libglvnd' 'wayland' 'lm_sensors' 'libclc' 'vulkan-icd-loader' 'zstd' 'expat')
optdepends=('opengl-man-pages: for the OpenGL API man pages')
provides=('mesa' 'opencl-mesa' 'vulkan-intel' 'vulkan-radeon' 'vulkan-mesa-layer' 'libva-mesa-driver' 'mesa-vdpau' 'vulkan-swrast' 'vulkan-driver' 'mesa-libgl' 'opengl-driver' 'opencl-driver')
conflicts=('mesa' 'opencl-mesa' 'vulkan-intel' 'vulkan-radeon' 'vulkan-mesa-layer' 'libva-mesa-driver' 'mesa-vdpau' 'vulkan-swrast' 'mesa-libgl')
url="https://www.mesa3d.org"
license=('custom')
source=('mesa::git+https://gitlab.freedesktop.org/mesa/mesa.git#branch=main'
'LICENSE'
'workaround--LLVM15-FTBFS-no-more-Coroutines.h.patch')
md5sums=('SKIP'
'5c65a0fe315dd347e09b1f2826a1df5a'
'a4e1e8a8a90b6434b80d8ec859747e0c')
sha512sums=('SKIP'
'25da77914dded10c1f432ebcbf29941124138824ceecaf1367b3deedafaecabc082d463abcfa3d15abff59f177491472b505bcb5ba0c4a51bb6b93b4721a23c2'
'ee96c9c3c29cfd7bffc1ee72fecf6bdd9a4ac7245afa11e7b28432e8695fc9d16d241cb8330029e5460cc54898258b87bc73d99fc1bf9743ce9bb718a85f5806')
# NINJAFLAGS is an env var used to pass commandline options to ninja
# NOTE: It's your responbility to validate the value of $NINJAFLAGS. If unsure, don't set it.
# MESA_WHICH_LLVM is an environment variable that determines which llvm package tree is used to built mesa-git against.
# Adding a line to ~/.bashrc that sets this value is the simplest way to ensure a specific choice.
#
# NOTE: Aur helpers don't handle this method well, check the sticky comments on mesa-git aur page .
#
# 1: llvm-minimal-git (aur) preferred value
# 2: AUR llvm-git
# 3: llvm-git from LordHeavy unofficial repo
# 4 llvm (stable from extra) Default value
#
if [[ ! $MESA_WHICH_LLVM ]] ; then
MESA_WHICH_LLVM=2
fi
case $MESA_WHICH_LLVM in
1)
# aur llvm-minimal-git
makedepends+=('llvm-minimal-git')
depends+=('llvm-libs-minimal-git')
;;
2)
# aur llvm-git
# depending on aur-llvm-* to avoid mixup with LH llvm-git
makedepends+=('aur-llvm-git')
depends+=('aur-llvm-libs-git')
optdepends+=('aur-llvm-git: opencl')
;;
3)
# mesa-git/llvm-git (lordheavy unofficial repo)
makedepends+=('llvm-git' 'clang-git')
depends+=('llvm-libs-git')
optdepends+=('clang-git: opencl' 'compiler-rt: opencl')
;;
4)
# extra/llvm
makedepends+=(llvm=13.0.1 clang=13.0.1)
depends+=(llvm-libs=13.0.1)
optdepends+=('clang: opencl' 'compiler-rt: opencl')
;;
*)
esac
pkgver() {
cd mesa
local _ver
read -r _ver <VERSION
local _patchver
local _patchfile
for _patchfile in "${source[@]}"; do
_patchfile="${_patchfile%%::*}"
_patchfile="${_patchfile##*/}"
[[ $_patchfile = *.patch ]] || continue
_patchver="${_patchver}$(md5sum ${srcdir}/${_patchfile} | cut -c1-32)"
done
_patchver="$(echo -n $_patchver | md5sum | cut -c1-32)"
echo ${_ver/-/_}.$(git rev-list --count HEAD).$(git rev-parse --short HEAD).${_patchver}
}
prepare() {
# although removing _build folder in build() function feels more natural,
# that interferes with the spirit of makepkg --noextract
if [ -d _build ]; then
rm -rf _build
fi
local _patchfile
for _patchfile in "${source[@]}"; do
_patchfile="${_patchfile%%::*}"
_patchfile="${_patchfile##*/}"
[[ $_patchfile = *.patch ]] || continue
echo "Applying patch $_patchfile..."
patch --directory=mesa --forward --strip=1 --input="${srcdir}/${_patchfile}"
done
}
build () {
meson setup mesa _build \
-D b_ndebug=true \
-D b_lto=true \
-D buildtype=plain \
--wrap-mode=nofallback \
-D prefix=/usr \
-D sysconfdir=/etc \
-D platforms=x11,wayland \
-D gallium-drivers=r300,r600,radeonsi,nouveau,svga,swrast,virgl,iris,zink,crocus \
-D vulkan-drivers=amd,intel,swrast,virtio-experimental \
-D dri3=enabled \
-D egl=enabled \
-D gallium-extra-hud=true \
-D gallium-nine=true \
-D gallium-omx=bellagio \
-D gallium-va=enabled \
-D gallium-vdpau=enabled \
-D gallium-xa=enabled \
-D gallium-xvmc=disabled \
-D gbm=enabled \
-D gles1=disabled \
-D gles2=enabled \
-D glvnd=true \
-D glx=dri \
-D libunwind=enabled \
-D llvm=enabled \
-D lmsensors=enabled \
-D osmesa=true \
-D shared-glapi=enabled \
-D gallium-opencl=icd \
-D valgrind=disabled \
-D vulkan-layers=device-select,overlay \
-D tools=[] \
-D zstd=enabled \
-D microsoft-clc=disabled \
-D video-codecs=vc1dec,h264dec,h264enc,h265dec,h265enc
meson configure _build
ninja $NINJAFLAGS -C _build
}
package() {
DESTDIR="${pkgdir}" ninja $NINJAFLAGS -C _build install
# remove script file from /usr/bin
# https://gitlab.freedesktop.org/mesa/mesa/issues/2230
rm "${pkgdir}/usr/bin/mesa-overlay-control.py"
rmdir "${pkgdir}/usr/bin"
# indirect rendering
ln -s /usr/lib/libGLX_mesa.so.0 "${pkgdir}/usr/lib/libGLX_indirect.so.0"
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" "${srcdir}/LICENSE"
}
---
src/gallium/auxiliary/gallivm/lp_bld.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/src/gallium/auxiliary/gallivm/lp_bld.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld.h
@@ -81,7 +81,7 @@
#define LLVMInsertBasicBlock ILLEGAL_LLVM_FUNCTION
#define LLVMCreateBuilder ILLEGAL_LLVM_FUNCTION
-#if LLVM_VERSION_MAJOR >= 8
+#if LLVM_VERSION_MAJOR >= 8 && LLVM_VERSION_MAJOR < 15
#define GALLIVM_HAVE_CORO 1
#else
#define GALLIVM_HAVE_CORO 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment