e4c78b3d18
Shipping the Intel iris/ANV gallium+vulkan drivers turns on Mesa's with_clc
(with_driver_using_cl), which requires, in the native mesa_clc/intel_clc shader
precompile path: LLVMSPIRVLib (SPIRV-LLVM-Translator), SPIRV-Tools, and clang's
C++ libraries. None had recipes. Add three host-built dev recipes modelled on
libclc (built against llvm-native's host LLVM 21, staged into the cross sysroot
so Mesa's pkg-config resolves them):
- spirv-headers (SPIR-V grammar + headers; find_package package)
- spirv-tools (SPIRV-Tools.pc; SPIRV-Headers via find_package)
- spirv-llvm-translator (LLVMSPIRVLib.pc, v21.1.0.0; llvm_release_210 branch)
All three clear the cross-sysroot __libc_start_main leak with the llvm21-style
flag-clearing block in their native toolchain files.
Wire them + clang21 into mesa deps: Mesa resolves dep_clang via
cpp.find_library('clang-cpp', dirs: llvm-config --libdir), which the wrapper
rewrites to the target sysroot/lib, so clang21's target libclang-cpp.so must be
staged there (shared-llvm=enabled avoids needing the static clang libs).
Verified: mesa meson now passes amdgpu, LLVMSPIRVLib, SPIRV-Tools, and clang-cpp
(next gate is libelf for radeonsi).
69 lines
3.0 KiB
TOML
69 lines
3.0 KiB
TOML
[package]
|
|
name = "spirv-headers"
|
|
# SPIR-V machine-readable headers/grammar. Build-only dependency of SPIRV-Tools
|
|
# and SPIRV-LLVM-Translator, which are in turn required by Mesa's CLC shader
|
|
# precompile path (with_clc, forced by the Intel iris/ANV drivers we ship).
|
|
# Version follows the Red Bear OS branch per local/AGENTS.md.
|
|
version = "0.3.1"
|
|
description = "SPIR-V machine-readable headers and grammar (KhronosGroup/SPIRV-Headers). Consumed at build time by SPIRV-Tools and SPIRV-LLVM-Translator for Mesa's clc tool."
|
|
|
|
[source]
|
|
git = "https://github.com/KhronosGroup/SPIRV-Headers.git"
|
|
branch = "main"
|
|
shallow_clone = true
|
|
|
|
[build]
|
|
template = "custom"
|
|
# Header-only + install-only: SPIRV-Headers ships headers, the SPIR-V grammar
|
|
# JSON, and its find_package(SPIRV-Headers) cmake package. Nothing is compiled,
|
|
# so the artifact is architecture-neutral; we install it into the (cross) build
|
|
# sysroot /usr so the host-native SPIRV-Tools / SPIRV-LLVM-Translator builds
|
|
# resolve find_package(SPIRV-Headers) from ${COOKBOOK_SYSROOT}/usr. We still run
|
|
# cmake with a HOST toolchain file (not the cross one) so the generated cmake
|
|
# package is not tainted with Redox sysroot paths.
|
|
dependencies = []
|
|
script = '''
|
|
DYNAMIC_INIT
|
|
|
|
# Use a HOST toolchain file: header-only, but keep cmake off the cross sysroot.
|
|
generate_cookbook_cmake_file "${COOKBOOK_HOST_TARGET}" "" "/usr" native_spirvhdr.cmake
|
|
# Clear the cross-sysroot flags generate_cookbook_cmake_file injects, else the
|
|
# host gcc links against the Redox sysroot libc (-L.../sysroot/lib) and fails
|
|
# "undefined reference to __libc_start_main". Mirrors llvm21/native.cmake.
|
|
cat >> native_spirvhdr.cmake <<'NATIVE_EOF'
|
|
set(CMAKE_C_COMPILER "/usr/bin/gcc" CACHE FILEPATH "" FORCE)
|
|
set(CMAKE_CXX_COMPILER "/usr/bin/g++" CACHE FILEPATH "" FORCE)
|
|
set(CMAKE_C_FLAGS "" CACHE STRING "" FORCE)
|
|
set(CMAKE_CXX_FLAGS "" CACHE STRING "" FORCE)
|
|
set(CMAKE_C_FLAGS_RELEASE "-O2" CACHE STRING "" FORCE)
|
|
set(CMAKE_CXX_FLAGS_RELEASE "-O2" CACHE STRING "" FORCE)
|
|
set(CMAKE_EXE_LINKER_FLAGS "" CACHE STRING "" FORCE)
|
|
set(CMAKE_SHARED_LINKER_FLAGS "" CACHE STRING "" FORCE)
|
|
set(CMAKE_MODULE_LINKER_FLAGS "" CACHE STRING "" FORCE)
|
|
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "" CACHE STRING "" FORCE)
|
|
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "" CACHE STRING "" FORCE)
|
|
set(CMAKE_SYSROOT "" CACHE STRING "" FORCE)
|
|
set(CMAKE_FIND_ROOT_PATH "" CACHE STRING "" FORCE)
|
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM "NEVER" CACHE STRING "" FORCE)
|
|
set(ENV{LDFLAGS} "")
|
|
set(ENV{CFLAGS} "")
|
|
set(ENV{CXXFLAGS} "")
|
|
NATIVE_EOF
|
|
|
|
COOKBOOK_CMAKE_FLAGS=(
|
|
-DCMAKE_TOOLCHAIN_FILE="$(realpath native_spirvhdr.cmake)"
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
-DCMAKE_INSTALL_PREFIX=/usr
|
|
-DCMAKE_INSTALL_LIBDIR=lib
|
|
-DCMAKE_INSTALL_INCLUDEDIR=include
|
|
-DSPIRV_HEADERS_ENABLE_TESTS=OFF
|
|
-DSPIRV_HEADERS_ENABLE_INSTALL=ON
|
|
-G Ninja
|
|
-Wno-dev
|
|
)
|
|
|
|
"${COOKBOOK_CMAKE}" "${COOKBOOK_SOURCE}" "${COOKBOOK_CMAKE_FLAGS[@]}"
|
|
"${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}"
|
|
DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install
|
|
'''
|