Install this version:
emerge -a =sci-misc/stable-diffusion-cpp-9999
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =sci-misc/stable-diffusion-cpp-9999
Or alternatively:
emerge --autounmask-write -a =sci-misc/stable-diffusion-cpp-9999
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 9999 | 8 | ~amd64 | 0 |
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
ROCM_VERSION="10.0"
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/leejet/stable-diffusion.cpp.git"
EGIT_SUBMODULES=( 'ggml' )
else
MY_BUILD="${PV#0_p}"
MY_COMMIT="3f8527a"
MY_PV="master-${MY_BUILD}-${MY_COMMIT}"
GGML_COMMIT="89c4413f5da6fb20cc796f16033d37f129be81fd"
SRC_URI="
https://github.com/leejet/stable-diffusion.cpp/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.tar.gz
https://github.com/leejet/ggml/archive/${GGML_COMMIT}.tar.gz -> ${PN}-ggml-${GGML_COMMIT:0:10}.tar.gz
"
S="${WORKDIR}/stable-diffusion.cpp-${MY_PV}"
fi
inherit cmake cuda linux-info rocm toolchain-funcs
DESCRIPTION="Diffusion model (SD, Flux, Wan, etc.) inference in pure C/C++"
HOMEPAGE="https://github.com/leejet/stable-diffusion.cpp"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64"
X86_CPU_FLAGS=(
amx_bf16
amx_int8
amx_tile
avx
avx2
avx512_bf16
avx512_vnni
avx512f
avx512vbmi
avx_vnni
bmi2
f16c
fma3
sse4_2
)
CPU_FLAGS=( "${X86_CPU_FLAGS[@]/#/cpu_flags_x86_}" )
IUSE="${CPU_FLAGS[*]} blis cuda flexiblas hip openblas opencl +openmp vulkan webm webp"
unset X86_CPU_FLAGS CPU_FLAGS
REQUIRED_USE="
?? (
blis
flexiblas
openblas
)
hip? ( ${ROCM_REQUIRED_USE} )
webm? ( webp )
"
RESTRICT="test"
CDEPEND="
blis? ( sci-libs/blis:= )
cuda? ( dev-util/nvidia-cuda-toolkit:= )
flexiblas? ( sci-libs/flexiblas:= )
hip? (
>=dev-util/hip-10.0:=
>=sci-libs/hipBLAS-10.0:=
)
openblas? ( sci-libs/openblas:= )
openmp? ( llvm-runtimes/openmp:= )
webm? ( media-libs/libwebm:= )
webp? ( media-libs/libwebp:= )
"
DEPEND="${CDEPEND}
opencl? ( dev-util/opencl-headers )
vulkan? (
dev-util/spirv-headers
dev-util/vulkan-headers
)
"
RDEPEND="${CDEPEND}
opencl? ( dev-libs/opencl-icd-loader )
vulkan? ( media-libs/vulkan-loader )
"
BDEPEND="
vulkan? ( media-libs/shaderc )
"
PATCHES=(
"${FILESDIR}/0001-hip-fix-gfx12-bf16-wmma-with-llvm-23.patch"
"${FILESDIR}/0003-model-loader-dequantize-int8-tensorwise-when-converting.patch"
)
# 0004 is written for the pinned ggml, not the submodule master uses.
if [[ ${PV} != 9999 ]]; then
PATCHES+=(
"${FILESDIR}/0004-vulkan-fa-cm1-shift-last-partial-kv-block.patch"
)
fi
pkg_pretend() {
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
}
pkg_setup() {
if use hip; then
linux-info_pkg_setup
if linux-info_get_any_version && linux_config_exists; then
linux_chkconfig_present HSA_AMD_SVM ||
ewarn "ROCm/HIP requires CONFIG_HSA_AMD_SVM in the kernel."
fi
fi
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
}
src_unpack() {
if [[ ${PV} == 9999 ]]; then
git-r3_src_unpack
else
default
rmdir "${S}/ggml" || die
mv "${WORKDIR}/ggml-${GGML_COMMIT}" "${S}/ggml" || die
fi
}
src_prepare() {
use cuda && cuda_src_prepare
sed -i -e "s/if(GIT_EXE)/if(NOT DEFINED SDCPP_BUILD_VERSION AND GIT_EXE)/" \
CMakeLists.txt || die
cmake_src_prepare
}
src_configure() {
local mycmakeargs=(
-DSD_BUILD_EXAMPLES=ON
-DSD_BUILD_SHARED_LIBS=ON
-DSD_BUILD_SHARED_GGML_LIB=ON
-DSD_SERVER_BUILD_FRONTEND=OFF
-DSD_WEBP=$(usex webp ON OFF)
-DSD_USE_SYSTEM_WEBP=$(usex webp ON OFF)
-DSD_WEBM=$(usex webm ON OFF)
-DSD_USE_SYSTEM_WEBM=$(usex webm ON OFF)
-DSD_CUDA=$(usex cuda ON OFF)
-DSD_HIPBLAS=$(usex hip ON OFF)
-DSD_VULKAN=$(usex vulkan ON OFF)
-DSD_OPENCL=$(usex opencl ON OFF)
-DSD_RPC=ON
-DCMAKE_INSTALL_INCLUDEDIR="include/stable-diffusion.cpp"
-DCMAKE_INSTALL_LIBDIR="${EPREFIX}/usr/$(get_libdir)/stable-diffusion.cpp"
-DCMAKE_INSTALL_RPATH="${EPREFIX}/usr/$(get_libdir)/stable-diffusion.cpp"
# GGML backend controls
-DGGML_NATIVE=OFF
-DGGML_OPENMP=$(usex openmp ON OFF)
# CPU Flags
-DGGML_SSE42=$(usex cpu_flags_x86_sse4_2 ON OFF)
-DGGML_AVX=$(usex cpu_flags_x86_avx ON OFF)
-DGGML_AVX_VNNI=$(usex cpu_flags_x86_avx_vnni ON OFF)
-DGGML_AVX2=$(usex cpu_flags_x86_avx2 ON OFF)
-DGGML_BMI2=$(usex cpu_flags_x86_bmi2 ON OFF)
-DGGML_AVX512=$(usex cpu_flags_x86_avx512f ON OFF)
-DGGML_AVX512_VBMI=$(usex cpu_flags_x86_avx512vbmi ON OFF)
-DGGML_AVX512_VNNI=$(usex cpu_flags_x86_avx512_vnni ON OFF)
-DGGML_AVX512_BF16=$(usex cpu_flags_x86_avx512_bf16 ON OFF)
-DGGML_FMA=$(usex cpu_flags_x86_fma3 ON OFF)
-DGGML_F16C=$(usex cpu_flags_x86_f16c ON OFF)
-DGGML_AMX_TILE=$(usex cpu_flags_x86_amx_tile ON OFF)
-DGGML_AMX_INT8=$(usex cpu_flags_x86_amx_int8 ON OFF)
-DGGML_AMX_BF16=$(usex cpu_flags_x86_amx_bf16 ON OFF)
)
if [[ ${PV} != 9999 ]]; then
mycmakeargs+=(
-DSDCPP_BUILD_VERSION="${MY_PV}"
-DSDCPP_BUILD_COMMIT="${MY_COMMIT}"
)
fi
if use openblas ; then
mycmakeargs+=( -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS )
fi
if use blis ; then
mycmakeargs+=( -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=FLAME )
fi
if use flexiblas ; then
mycmakeargs+=( -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=FlexiBLAS )
fi
if use cuda; then
local -x CUDAHOSTCXX="$(cuda_gccdir)"
cuda_add_sandbox
addpredict "/dev/char/"
fi
if use hip; then
rocm_use_hipcc
mycmakeargs+=(
-DGPU_TARGETS="$(get_amdgpu_flags)"
)
fi
cmake_src_configure
}
Manage flags for this package:
euse -i <flag> -p sci-misc/stable-diffusion-cpp |
euse -E <flag> -p sci-misc/stable-diffusion-cpp |
euse -D <flag> -p sci-misc/stable-diffusion-cpp
blis? ( sci-libs/blis:= ) cuda? ( dev-util/nvidia-cuda-toolkit:= ) flexiblas? ( sci-libs/flexiblas:= ) hip? ( >=dev-util/hip-10.0:= >=sci-libs/hipBLAS-10.0:= ) openblas? ( sci-libs/openblas:= ) openmp? ( llvm-runtimes/openmp:= ) webm? ( media-libs/libwebm:= ) webp? ( media-libs/libwebp:= ) opencl? ( dev-util/opencl-headers ) vulkan? ( dev-util/spirv-headers dev-util/vulkan-headers )
blis? ( sci-libs/blis:= ) cuda? ( dev-util/nvidia-cuda-toolkit:= ) flexiblas? ( sci-libs/flexiblas:= ) hip? ( >=dev-util/hip-10.0:= >=sci-libs/hipBLAS-10.0:= ) openblas? ( sci-libs/openblas:= ) openmp? ( llvm-runtimes/openmp:= ) webm? ( media-libs/libwebm:= ) webp? ( media-libs/libwebp:= ) opencl? ( dev-libs/opencl-icd-loader ) vulkan? ( media-libs/vulkan-loader )
vulkan? ( media-libs/shaderc )
| Type | File | Size | Source URLs |
|---|---|---|---|
| DIST | stable-diffusion-cpp-ggml-89c4413f5d.tar.gz | 4156872 bytes | https://github.com/leejet/ggml/archive/89c4413f5da6fb20cc796f16033d37f129be81fd.tar.gz |