Oh lawd he comin'

This commit is contained in:
TheK0tYaRa 2025-09-27 21:04:42 +03:00
parent c72f1038c1
commit fb8e120d8d
24 changed files with 681 additions and 4 deletions

View file

@ -0,0 +1,44 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..14} )
inherit cmake-multilib python-any-r1
if [[ ${PV} == *9999* ]]; then
EGIT_REPO_URI="https://github.com/KhronosGroup/${PN}.git"
inherit git-r3
elif [[ ${PV} == *1.4.328* ]]; then
EGIT_REPO_URI="https://github.com/KhronosGroup/${PN}.git"
inherit git-r3
#
EGIT_OVERRIDE_COMMIT_KHRONOSGROUP_GLSLANG="16.0.0"
KEYWORDS="~amd64 ~x86"
else
GIT_COMMIT="vulkan-sdk-${PV}"
SRC_URI="https://github.com/KhronosGroup/${PN}/archive/${GIT_COMMIT}.tar.gz -> ${P}.tar.gz"
KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv x86"
S="${WORKDIR}/${PN}-${GIT_COMMIT}"
fi
DESCRIPTION="Khronos reference front-end for GLSL and ESSL, and sample SPIR-V generator"
HOMEPAGE="https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/ https://github.com/KhronosGroup/glslang"
LICENSE="BSD"
SLOT="0/16.0"
BDEPEND="${PYTHON_DEPS}
~dev-util/spirv-tools-${PV}[${MULTILIB_USEDEP}]
"
DEPEND="~dev-util/spirv-tools-${PV}[${MULTILIB_USEDEP}]"
RDEPEND="${DEPEND}"
multilib_src_configure() {
local mycmakeargs=(
-DENABLE_PCH=OFF
-DALLOW_EXTERNAL_SPIRV_TOOLS=ON
)
cmake_src_configure
}

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>vulkan@gentoo.org</email>
<name>Vulkan Project</name>
</maintainer>
<upstream>
<remote-id type="github">KhronosGroup/glslang</remote-id>
</upstream>
</pkgmetadata>

View file

@ -9,11 +9,11 @@ inherit cmake
if [[ ${PV} == *9999* ]]; then
EGIT_REPO_URI="https://github.com/KhronosGroup/${MY_PN}.git"
inherit git-r3
elif [[ ${PV} == *1.4.326* ]]; then
elif [[ ${PV} == *1.4.328* ]]; then
EGIT_REPO_URI="https://github.com/KhronosGroup/${MY_PN}.git"
inherit git-r3
#EGIT_COMMIT
EGIT_OVERRIDE_BRANCH_KHRONOSGROUP_SPIRV_HEADERS="vulkan-tmp-${PV}"
#
EGIT_OVERRIDE_COMMIT_KHRONOSGROUP_SPIRV_HEADERS="01e0577914a75a2569c846778c2f93aa8e6feddd"
KEYWORDS="~amd64 ~x86"
else
SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/vulkan-sdk-${PV}.tar.gz -> ${P}.tar.gz"

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>vulkan@gentoo.org</email>
<name>Vulkan Project</name>
</maintainer>
<upstream>
<remote-id type="github">KhronosGroup/SPIRV-Tools</remote-id>
</upstream>
</pkgmetadata>

View file

@ -0,0 +1,62 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
MY_PN=SPIRV-Tools
PYTHON_COMPAT=( python3_{11..14} )
PYTHON_REQ_USE="xml(+)"
inherit cmake-multilib python-any-r1
if [[ ${PV} == *9999* ]]; then
EGIT_REPO_URI="https://github.com/KhronosGroup/${MY_PN}.git"
inherit git-r3
elif [[ ${PV} == *1.4.328* ]]; then
EGIT_REPO_URI="https://github.com/KhronosGroup/${MY_PN}.git"
inherit git-r3
#
EGIT_OVERRIDE_COMMIT_KHRONOSGROUP_SPIRV_TOOLS="v2025.4"
KEYWORDS="~amd64 ~x86"
else
EGIT_COMMIT="vulkan-sdk-${PV}"
SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
S="${WORKDIR}"/${MY_PN}-${EGIT_COMMIT}
fi
DESCRIPTION="Provides an API and commands for processing SPIR-V modules"
HOMEPAGE="https://github.com/KhronosGroup/SPIRV-Tools"
LICENSE="Apache-2.0"
SLOT="0"
IUSE="test"
RESTRICT="!test? ( test )"
DEPEND="~dev-util/spirv-headers-${PV}"
# RDEPEND=""
BDEPEND="${PYTHON_DEPS}"
multilib_src_configure() {
local mycmakeargs=(
-DSPIRV-Headers_SOURCE_DIR="${ESYSROOT}"/usr/
-DSPIRV_WERROR=OFF
-DSPIRV_SKIP_TESTS=$(usex !test)
-DSPIRV_TOOLS_BUILD_STATIC=OFF
-DCMAKE_C_FLAGS="${CFLAGS} -DNDEBUG"
-DCMAKE_CXX_FLAGS="${CXXFLAGS} -DNDEBUG"
)
cmake_src_configure
}
src_test() {
CMAKE_SKIP_TESTS=(
# Not relevant for us downstream
spirv-tools-copyrights
# Tests fail upon finding symbols that do not match a regular expression
# in the generated library. Easily hit with non-standard compiler flags
spirv-tools-symbol-exports.*
)
multilib-minimal_src_test
}

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>vulkan@gentoo.org</email>
<name>Vulkan Project</name>
</maintainer>
<upstream>
<remote-id type="github">KhronosGroup/Vulkan-Headers</remote-id>
</upstream>
</pkgmetadata>

View file

@ -0,0 +1,46 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
MY_PN=Vulkan-Headers
inherit cmake
if [[ ${PV} == *9999* ]]; then
EGIT_REPO_URI="https://github.com/KhronosGroup/${MY_PN}.git"
inherit git-r3
elif [[ ${PV} == *1.4.328* ]]; then
EGIT_REPO_URI="https://github.com/KhronosGroup/${MY_PN}.git"
inherit git-r3
#
EGIT_OVERRIDE_COMMIT_KHRONOSGROUP_VULKAN_HEADERS="v1.4.328"
KEYWORDS="~amd64 ~x86"
else
SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/vulkan-sdk-${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv ~sparc x86"
S="${WORKDIR}"/${MY_PN}-vulkan-sdk-${PV}
fi
DESCRIPTION="Vulkan Header files and API registry"
HOMEPAGE="https://github.com/KhronosGroup/Vulkan-Headers"
LICENSE="Apache-2.0"
SLOT="0"
IUSE="test"
RESTRICT="!test? ( test )"
src_configure() {
local mycmakeargs=(
-DVULKAN_HEADERS_ENABLE_MODULE=OFF
-DVULKAN_HEADERS_ENABLE_TESTS=$(usex test)
)
cmake_src_configure
}
src_install() {
# VULKAN_HEADERS_ENABLE_MODULE doesn't seem to be working so just
# delete the modules manually
cmake_src_install
find "${ED}" -name "*.cppm" -type f -delete || die
}

View file

@ -0,0 +1,90 @@
https://bugs.gentoo.org/959725
https://github.com/KhronosGroup/Vulkan-Tools/issues/1130
https://github.com/KhronosGroup/Vulkan-Tools/pull/1134
https://github.com/KhronosGroup/Vulkan-Tools/commit/105d6c1fede00c3a9055e5a531ebf3d99bac406e
From f546743016f5301c063f2c50af0ea43dd2485ef4 Mon Sep 17 00:00:00 2001
From: Charles Giessen <charles@lunarg.com>
Date: Thu, 17 Jul 2025 09:56:40 -0500
Subject: [PATCH] build: Remove pkg-config provided library names
The library names of Xcb, Xlib, and Wayland do not need to be queried from pkg-config,
instead they can be hardcoded to use the fallback names.
The intent of querying the library names was to prevent issues where the hardcoded name
was not the platform-appropriate name. But because <library>_LINK_LIBRARIES can have
more than one library name, the logic to assign <library>_LINK_LIBRARIES into a compile
definition breaks horribly. While it is possible to handle this in CMake, the dlopen code would
also have to handle it which is much more error prone.
--- a/cube/CMakeLists.txt
+++ b/cube/CMakeLists.txt
@@ -307,16 +307,6 @@ if (ANDROID)
return()
endif()
-if (XCB_LINK_LIBRARIES)
- target_compile_definitions(vkcube PRIVATE "XCB_LIBRARY=\"${XCB_LINK_LIBRARIES}\"")
-endif()
-if (X11_LINK_LIBRARIES)
- target_compile_definitions(vkcube PRIVATE "XLIB_LIBRARY=\"${X11_LINK_LIBRARIES}\"")
-endif()
-if (WAYLAND_CLIENT_LINK_LIBRARIES)
- target_compile_definitions(vkcube PRIVATE "WAYLAND_LIBRARY=\"${WAYLAND_CLIENT_LINK_LIBRARIES}\"")
-endif()
-
# ----------------------------------------------------------------------------
# vkcubepp
@@ -360,16 +350,6 @@ target_include_directories(vkcubepp PRIVATE .)
target_compile_definitions(vkcubepp PRIVATE ${ENABLED_CUBE_PLATFORMS})
target_link_libraries(vkcubepp ${CMAKE_DL_LIBS} Vulkan::Headers)
-if (XCB_LINK_LIBRARIES )
- target_compile_definitions(vkcubepp PUBLIC "XCB_LIBRARY=\"${XCB_LINK_LIBRARIES}\"")
-endif()
-if (X11_LINK_LIBRARIES)
- target_compile_definitions(vkcubepp PUBLIC "XLIB_LIBRARY=\"${X11_LINK_LIBRARIES}\"")
-endif()
-if (WAYLAND_CLIENT_LINK_LIBRARIES)
- target_compile_definitions(vkcubepp PUBLIC "WAYLAND_LIBRARY=\"${WAYLAND_CLIENT_LINK_LIBRARIES}\"")
-endif()
-
if(APPLE)
install(
TARGETS vkcubepp
--- a/cube/wayland_loader.h
+++ b/cube/wayland_loader.h
@@ -80,9 +80,6 @@ static PFN_wl_display_disconnect cube_wl_display_disconnect = NULL;
static inline void *initialize_wayland() {
void *wayland_library = NULL;
-#if defined(WAYLAND_LIBRARY)
- wayland_library = dlopen(WAYLAND_LIBRARY, RTLD_NOW | RTLD_LOCAL);
-#endif
if (NULL == wayland_library) {
wayland_library = dlopen("libwayland-client.so.0", RTLD_NOW | RTLD_LOCAL);
}
--- a/cube/xcb_loader.h
+++ b/cube/xcb_loader.h
@@ -88,9 +88,6 @@ static PFN_xcb_screen_next cube_xcb_screen_next = NULL;
void *initialize_xcb() {
void *xcb_library = NULL;
-#if defined(XCB_LIBRARY)
- xcb_library = dlopen(XCB_LIBRARY, RTLD_NOW | RTLD_LOCAL);
-#endif
if (NULL == xcb_library) {
xcb_library = dlopen("libxcb.so.1", RTLD_NOW | RTLD_LOCAL);
}
--- a/cube/xlib_loader.h
+++ b/cube/xlib_loader.h
@@ -72,9 +72,6 @@ static PFN_XFlush cube_XFlush = NULL;
void* initialize_xlib() {
void* xlib_library = NULL;
-#if defined(XLIB_LIBRARY)
- xlib_library = dlopen(XLIB_LIBRARY, RTLD_NOW | RTLD_LOCAL);
-#endif
if (NULL == xlib_library) {
xlib_library = dlopen("libX11.so.6", RTLD_NOW | RTLD_LOCAL);
}

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>vulkan@gentoo.org</email>
<name>Vulkan Project</name>
</maintainer>
<use>
<flag name="cube">Build the cube/cubepp demos</flag>
</use>
<upstream>
<remote-id type="github">KhronosGroup/Vulkan-Tools</remote-id>
</upstream>
</pkgmetadata>

View file

@ -0,0 +1,97 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
MY_PN=Vulkan-Tools
PYTHON_COMPAT=( python3_{11..14} )
inherit cmake-multilib python-any-r1
if [[ ${PV} == *9999* ]]; then
EGIT_REPO_URI="https://github.com/KhronosGroup/${MY_PN}.git"
EGIT_SUBMODULES=()
inherit git-r3
elif [[ ${PV} == *1.4.328* ]]; then
EGIT_REPO_URI="https://github.com/KhronosGroup/${MY_PN}.git"
inherit git-r3
#
EGIT_OVERRIDE_COMMIT_KHRONOSGROUP_VULKAN_TOOLS="v1.4.328"
KEYWORDS="~amd64"
else
SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/vulkan-sdk-${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv"
S="${WORKDIR}"/${MY_PN}-vulkan-sdk-${PV}
fi
DESCRIPTION="Official Vulkan Tools and Utilities for Windows, Linux, Android, and MacOS"
HOMEPAGE="https://github.com/KhronosGroup/Vulkan-Tools"
LICENSE="Apache-2.0"
SLOT="0"
IUSE="cube wayland test X"
RESTRICT="!test? ( test )"
BDEPEND="${PYTHON_DEPS}
cube? ( ~dev-util/glslang-${PV}:=[${MULTILIB_USEDEP}] )
"
RDEPEND="
wayland? ( dev-libs/wayland[${MULTILIB_USEDEP}] )
X? (
x11-libs/libX11[${MULTILIB_USEDEP}]
x11-libs/libxcb:=[${MULTILIB_USEDEP}]
)
"
DEPEND="${RDEPEND}
~dev-util/vulkan-headers-${PV}
X? ( x11-libs/libXrandr[${MULTILIB_USEDEP}] )
test? (
~media-libs/vulkan-loader-${PV}[${MULTILIB_USEDEP},wayland?,X?]
dev-cpp/gtest
)
"
#PATCHES=(
# "${FILESDIR}"/vulkan-tools-1.4.321-fix-cube-wayland.patch
#)
pkg_setup() {
MULTILIB_CHOST_TOOLS=(
/usr/bin/vulkaninfo
)
use cube && MULTILIB_CHOST_TOOLS+=(
/usr/bin/vkcube
/usr/bin/vkcubepp
)
python-any-r1_pkg_setup
}
multilib_src_configure() {
local mycmakeargs=(
-DCMAKE_C_FLAGS="${CFLAGS} -DNDEBUG"
-DCMAKE_CXX_FLAGS="${CXXFLAGS} -DNDEBUG -DGIT_BRANCH_NAME=\\\"gentoo\\\" -DGIT_TAG_INFO=\\\"${PV//./_}\\\""
-DCMAKE_DISABLE_FIND_PACKAGE_Git=ON
-DCMAKE_SKIP_RPATH=ON
-DBUILD_VULKANINFO=ON
-DBUILD_CUBE=$(usex cube)
-DBUILD_TESTS=$(usex test)
-DBUILD_WERROR=OFF
-DBUILD_WSI_WAYLAND_SUPPORT=$(usex wayland)
-DBUILD_WSI_XCB_SUPPORT=$(usex X)
-DBUILD_WSI_XLIB_SUPPORT=$(usex X)
-DVULKAN_HEADERS_INSTALL_DIR="${ESYSROOT}/usr"
)
cmake_src_configure
}
pkg_postinst() {
if use cube; then
einfo "As of version 1.4.304.0, the window system for 'vkcube' and 'vkcubepp'"
einfo "can be selected at runtime using the '--wsi' runtime argument."
einfo "For example, Wayland can be selected using '--wsi wayland'."
einfo "As such, 'vkcube-wayland' has been removed and the runtime argument"
einfo "must be used instead. See 'vkcube --help' for more information."
fi
}