feat: add package mesa #151

Open
sisungo wants to merge 1 commits from sisungo/semios-packages:mesa into master
+258
View File
@@ -0,0 +1,258 @@
import glob
import os
from lib.make import *
from lib import cpp, arch
version("26.2.0")
description("Open source implementations of OpenGL, OpenGL ES, Vulkan, OpenCL, and more")
maintainer("sisungo <[email protected]>")
source_url("https://archive.mesa3d.org/mesa-26.2.0.tar.xz")
builddep("shortcut/meson")
builddep("shortcut/c++")
builddep(f"libwayland-dev @{arch.get_target()}")
builddep(f"libffi-dev @{arch.get_target()}")
builddep(f"libexpat-dev @{arch.get_target()}")
builddep(f"pkgconf @{arch.get_target()}")
builddep(f"libllvm-dev @{arch.get_target()}")
builddep(f"libclang-dev @{arch.get_target()}")
builddep(f"libunwind-dev @{arch.get_target()}")
builddep(f"libz-ng-dev @{arch.get_target()}")
builddep(f"libzstd-dev @{arch.get_target()}")
builddep(f"libgldispatch-dev @{arch.get_target()}")
builddep(f"libegl-dev @{arch.get_target()}")
builddep(f"libopengl-dev @{arch.get_target()}")
builddep(f"libglesv2-dev @{arch.get_target()}")
builddep(f"libva-dev @{arch.get_target()}")
builddep(f"libdrm-dev @{arch.get_target()}")
builddep(f"libllvmspirv-dev @{arch.get_target()}")
builddep(f"spirv-tools-dev @{arch.get_target()}")
builddep(f"libpng-dev @{arch.get_target()}")
builddep(f"libarchive-dev @{arch.get_target()}")
builddep(f"aws-lc-dev @{arch.get_target()}")
builddep(f"libxml2-dev @{arch.get_target()}")
builddep(f"linux-dev @{arch.get_target()}")
builddep("bison")
builddep("flex")
builddep("PyYAML.py")
builddep("Mako.py")
builddep("packaging.py")
builddep("pycparser.py")
builddep("glslang")
archspec = {
"aarch64-semios-linux": {
"vulkan_drivers": [
"mesa-vulkan-asahi",
"mesa-vulkan-freedreno",
"mesa-vulkan-intel",
"mesa-vulkan-lvp",
"mesa-vulkan-panfrost",
],
}
}
def build():
cpp.meson_setup([
# Generic directories
f"--libdir=/lib/{arch.get_target()}",
f"--includedir=/lib/{arch.get_target()}/include",
f"--datadir=/share",
# Platform selection
"-Dplatforms=wayland",
# User Features
"-Dshader-cache=enabled",
"-Dxmlconfig=enabled",
# Gallium
"-Dgallium-drivers=auto",
"-Dgallium-va=enabled",
f"-Dva-libs-path=/lib/{arch.get_target()}/dri",
# Vulkan
"-Dvulkan-drivers=auto",
"-Dvulkan-layers=device-select,overlay,screenshot,anti-lag,vram-report-limit",
f"-Dvulkan-icd-dir=/lib/{arch.get_target()}/vulkan/icd.d",
"-Dvulkan-manifest-per-architecture=false",
f"-Dvulkan-loader-rpath=/lib/{arch.get_target()}",
# GLES
"-Dgles1=disabled",
"-Dgles2=enabled",
# GBM
"-Dgbm=enabled",
f"-Dgbm-backends-path=/lib/{arch.get_target()}/gbm",
f"-Ddri-drivers-path=/lib/{arch.get_target()}/dri",
# EGL
"-Degl=enabled",
"-Degl-native-platform=surfaceless",
# GLVND
"-Dglvnd=enabled",
# Hardware Video Decoding
"-Dvideo-codecs=all_free",
# Intel
"-Dintel-rt=enabled",
# LLVM Configuration
"-Dllvm=enabled",
"-Dshared-llvm=enabled",
"-Dllvm-orcjit=true",
# Libraries to use
"-Dexpat=enabled",
"-Dzstd=enabled",
"-Dzlib=enabled",
# X11-related stuff
# We don't have X11 yet, so leave them disabled.
"-Dxlib-lease=disabled",
"-Dglx=disabled",
])
cpp.meson_compile()
cpp.meson_install(move=False)
on_build(build)
libdir = f"lib/{arch.get_target()}"
includedir = f"{libdir}/include"
def composer_add(composer, src, dst):
if os.path.isdir(src):
composer.add_dir(src, dst)
else:
composer.addfile(src, dst)
def pack_lib_simple(composer, name):
composer.makedir("lib")
for i in os.listdir(libdir):
if name in i:
composer_add(composer, f"{libdir}/{i}", f"lib/{i}")
def pack_dev_simple(composer, name):
composer.makedirs("lib/pkgconfig")
composer.makedir("include")
for i in os.listdir(f"{libdir}/pkgconfig"):
if name in i:
composer.addfile(f"{libdir}/pkgconfig/{i}", f"lib/pkgconfig/{i}")
for i in os.listdir(includedir):
if name in i:
composer_add(composer, f"{includedir}/{i}", f"include/{i}")
def pack_dri_dev(composer):
composer.makedir("include")
composer.add_dir(f"{includedir}/GL", "include/GL")
composer.makedirs("lib/pkgconfig")
composer.addfile(f"{libdir}/pkgconfig/dri.pc", "lib/pkgconfig/dri.pc")
def pack_libgallium(composer):
pack_lib_simple(composer, "gallium")
composer.add_dir(f"{libdir}/dri", "lib/dri")
composer.add_dir("share/drirc.d", "share/drirc.d")
def pack_libegl(composer):
pack_lib_simple(composer, "EGL")
composer.add_dir("share/glvnd", "share/glvnd")
def pack_vulkan(composer, name):
composer.makedir("lib")
composer.addfile(f"{libdir}/libvulkan_{name}.so", f"lib/libvulkan_{name}.so")
composer.makedirs("lib/vulkan/icd.d")
composer.addfile(f"{libdir}/vulkan/icd.d/{name}_icd.json", f"lib/vulkan/icd.d/{name}_icd.json")
def hasvulkan(name):
return name in archspec[arch.get_target()]["vulkan_drivers"]
package("libgbm")
dep("libdrm @same-arch")
dep("semi-libc @same-arch")
on_pack(lambda composer: pack_lib_simple(composer, "gbm"))
package("libgbm-dev")
dep("libdrm-dev @same-arch")
dep("libgbm (same)")
on_pack(lambda composer: pack_dev_simple(composer, "gbm"))
package("libgallium")
dep("libdrm @same-arch")
dep("libllvm @same-arch")
dep("libexpat @same-arch")
dep("libz @same-arch")
dep("libzstd @same-arch")
dep("libcxx @same-arch")
on_pack(pack_libgallium)
package("mesa-dri-dev")
on_pack(pack_dri_dev)
package("libegl-mesa")
dep("libgallium (same)")
dep("libgbm (same)")
dep("libexpat @same-arch")
dep("libdrm @same-arch")
dep("libwayland @same-arch")
on_pack(pack_libegl)
package("libegl-mesa-dev")
dep("libgbm-dev (same)")
dep("libexpat-dev @same-arch")
dep("libdrm-dev @same-arch")
dep("libwayland-dev @same-arch")
dep("libegl-mesa (same)")
on_pack(lambda composer: pack_dev_simple(composer, "EGL"))
if hasvulkan("mesa-vulkan-asahi"):
package("mesa-vulkan-asahi")
dep("libdrm @same-arch")
dep("libwayland @same-arch")
dep("libz @same-arch")
dep("libzstd @same-arch")
dep("libcxx @same-arch")
on_pack(lambda composer: pack_vulkan(composer, "asahi"))
if hasvulkan("mesa-vulkan-freedreno"):
package("mesa-vulkan-freedreno")
dep("libdrm @same-arch")
dep("libwayland @same-arch")
dep("libz @same-arch")
dep("libzstd @same-arch")
dep("libcxx @same-arch")
on_pack(lambda composer: pack_vulkan(composer, "freedreno"))
if hasvulkan("mesa-vulkan-intel"):
package("mesa-vulkan-intel")
dep("libdrm @same-arch")
dep("libwayland @same-arch")
dep("libz @same-arch")
dep("libzstd @same-arch")
dep("libcxx @same-arch")
on_pack(lambda composer: pack_vulkan(composer, "intel"))
if hasvulkan("mesa-vulkan-lvp"):
package("mesa-vulkan-lvp")
dep("libdrm @same-arch")
dep("libwayland @same-arch")
dep("libz @same-arch")
dep("libzstd @same-arch")
dep("libcxx @same-arch")
on_pack(lambda composer: pack_vulkan(composer, "lvp"))
if hasvulkan("mesa-vulkan-panfrost"):
package("mesa-vulkan-panfrost")
dep("libdrm @same-arch")
dep("libwayland @same-arch")
dep("libz @same-arch")
dep("libzstd @same-arch")
dep("libcxx @same-arch")
on_pack(lambda composer: pack_vulkan(composer, "panfrost"))