Merge updates from master

This commit is contained in:
Repository mirror & CI
2026-08-12 18:30:48 +00:00
57 changed files with 4527 additions and 179 deletions

View File

@@ -13,4 +13,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,107 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake llvm.org llvm-utils python-any-r1
DESCRIPTION="OCaml bindings for LLVM"
HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="0/${PV}"
IUSE="+debug test"
RESTRICT="!test? ( test )"
RDEPEND="
>=dev-lang/ocaml-4.00.0:0=
dev-ml/ocaml-ctypes:=
~llvm-core/llvm-${PV}:=[debug?]
!llvm-core/llvm[ocaml(-)]
"
DEPEND="
${RDEPEND}
"
BDEPEND="
${PYTHON_DEPS}
dev-lang/perl
dev-ml/findlib
"
LLVM_COMPONENTS=( llvm cmake libc third-party )
LLVM_USE_TARGETS=llvm
llvm.org_set_globals
src_configure() {
llvm_prepend_path "${LLVM_MAJOR}"
local libdir=$(get_libdir)
local mycmakeargs=(
-DLLVM_LIBDIR_SUFFIX=${libdir#lib}
-DBUILD_SHARED_LIBS=OFF
-DLLVM_BUILD_LLVM_DYLIB=ON
-DLLVM_LINK_LLVM_DYLIB=ON
-DLLVM_OCAML_OUT_OF_TREE=ON
# cheap hack: LLVM combines both anyway, and the only difference
# is that the former list is explicitly verified at cmake time
-DLLVM_TARGETS_TO_BUILD=""
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-DLLVM_BUILD_TESTS=$(usex test)
# disable various irrelevant deps and settings
-DLLVM_ENABLE_FFI=OFF
-DLLVM_ENABLE_TERMINFO=OFF
-DHAVE_HISTEDIT_H=NO
-DLLVM_ENABLE_ASSERTIONS=$(usex debug)
-DLLVM_ENABLE_EH=ON
-DLLVM_ENABLE_RTTI=ON
-DLLVM_HOST_TRIPLE="${CHOST}"
-DPython3_EXECUTABLE="${PYTHON}"
# TODO: ocamldoc
)
use test && mycmakeargs+=(
-DLLVM_LIT_ARGS="$(get_lit_flags)"
)
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
# also: custom rules for OCaml do not work for CPPFLAGS
use debug || local -x CFLAGS="${CFLAGS} -DNDEBUG"
cmake_src_configure
local llvm_libdir=$(llvm-config --libdir)
# an ugly hack; TODO: figure out a way to pass -L to ocaml...
cd "${BUILD_DIR}/${libdir}" || die
ln -s "${llvm_libdir}"/*.so . || die
if use test; then
local llvm_bindir=$(llvm-config --bindir)
# Force using system-installed tools.
sed -i -e "/llvm_tools_dir/s@\".*\"@\"${llvm_bindir}\"@" \
"${BUILD_DIR}"/test/lit.site.cfg.py || die
fi
}
src_compile() {
cmake_build ocaml_all
}
src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
cmake_build check-llvm-bindings-ocaml
}
src_install() {
DESTDIR="${D}" \
cmake -P "${BUILD_DIR}"/bindings/ocaml/cmake_install.cmake || die
dodoc bindings/ocaml/README.txt
}

View File

@@ -13,4 +13,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,49 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=hatchling
PYTHON_COMPAT=( python3_{12..14} )
inherit distutils-r1 llvm.org
DESCRIPTION="Python bindings for llvm-core/clang"
HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="0"
IUSE="test"
RESTRICT="!test? ( test )"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
# The module is opening libclang.so directly, and doing some blasphemy
# on top of it.
DEPEND="
>=llvm-core/clang-${PV}:*
!llvm-core/llvm:0[clang(-),python(-)]
!llvm-core/clang:0[python(-)]
"
RDEPEND="
${DEPEND}
${PYTHON_DEPS}
"
BDEPEND="
${PYTHON_DEPS}
dev-python/hatch-vcs[${PYTHON_USEDEP}]
test? (
llvm-core/clang:${LLVM_MAJOR}
)
"
LLVM_COMPONENTS=( clang/{bindings/python,include} )
llvm.org_set_globals
distutils_enable_tests unittest
python_test() {
# tests rely on results from a specific clang version, so override
# the search path
local -x CLANG_LIBRARY_PATH=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)
local -x CLANG_NO_DEFAULT_CONFIG=1
eunittest
}

View File

@@ -13,4 +13,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,41 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{12..14} )
inherit distutils-r1 llvm.org
DESCRIPTION="A stand-alone install of the LLVM suite testing tool"
HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="0"
IUSE="test"
RESTRICT="!test? ( test )"
# Tests require 'FileCheck' and 'not' utilities (from llvm)
BDEPEND="
test? (
dev-python/psutil[${PYTHON_USEDEP}]
llvm-core/llvm
)
"
LLVM_COMPONENTS=( llvm/utils/lit )
llvm.org_set_globals
# TODO: move the manpage generation here (from llvm-core/llvm)
src_prepare() {
cd "${WORKDIR}" || die
distutils-r1_src_prepare
}
python_test() {
local -x LIT_PRESERVES_TMP=1
local litflags=$(get_lit_flags)
./lit.py ${litflags//;/ } tests || die
}

View File

@@ -1 +1,2 @@
DIST pythran-0.18.1.gh.tar.gz 3714257 BLAKE2B 711f271297a6012a88a696df749efda8ca4c53e236a646bf2285ba80d0151b1117492c024eb8ab2e5f7337b1f9838332dba480a00a9c2a9216cbbeda78f971a8 SHA512 15650627b9396b49401067c3a7c161d1569f89f29a08243aa85659023e42ce028633915c51c8c5188a5599c201eb30aa2721d64ba766b2a252203469bc6e2ab1
DIST pythran-0.19.0.rc1.gh.tar.gz 3781467 BLAKE2B d33b42a9c0aaed95ddc6598b3b745d0a1bae4d96314491c39c83a15fb5677751abb40e17de36beacc4935fec2591862140ea88071ca2520c24f819fbcbafebc9 SHA512 2e865446cf2799db0ac56ac6b91dc23827432ad1af0d012c86bf26225683dc6e3bbe90c3d1dec775d1aaacb3f7f63afc99a1474972df3fcccd5085ec34d27611

View File

@@ -0,0 +1,118 @@
# Copyright 2021-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{12..15} )
inherit distutils-r1
MY_P=${P/_/.}
DESCRIPTION="Ahead of Time compiler for numeric kernels"
HOMEPAGE="
https://pypi.org/project/pythran/
https://github.com/serge-sans-paille/pythran/
"
SRC_URI="
https://github.com/serge-sans-paille/pythran/archive/${PV/_/.}.tar.gz
-> ${MY_P}.gh.tar.gz
"
S=${WORKDIR}/${MY_P}
LICENSE="BSD"
SLOT="0"
if [[ ${PV} != *_rc* ]]; then
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~s390 ~sparc ~x86"
fi
RDEPEND="
dev-libs/boost
dev-cpp/xsimd
>=dev-python/beniget-0.5[${PYTHON_USEDEP}]
>=dev-python/gast-0.7[${PYTHON_USEDEP}]
dev-python/numpy:=[${PYTHON_USEDEP}]
>=dev-python/ply-3.4[${PYTHON_USEDEP}]
>=dev-python/setuptools-73.0.1[${PYTHON_USEDEP}]
"
DEPEND="
test? (
dev-libs/boost
dev-cpp/xsimd
)
"
BDEPEND="
test? (
dev-python/pip[${PYTHON_USEDEP}]
dev-python/packaging[${PYTHON_USEDEP}]
dev-python/scipy[${PYTHON_USEDEP}]
dev-python/wheel[${PYTHON_USEDEP}]
virtual/cblas
!!dev-python/setuptools-declarative-requirements
)
"
EPYTEST_PLUGINS=()
EPYTEST_XDIST=1
distutils_enable_tests pytest
src_prepare() {
distutils-r1_src_prepare
# vendored C++ headers -- use system copies
rm -r pythran/{boost,xsimd} || die
# https://bugs.gentoo.org/916461
sed -i \
-e 's|blas=blas|blas=cblas|' \
-e 's|libs=|libs=cblas|' \
pythran/pythran-*.cfg || die
# unpin dependencies
sed -i -e 's:~=:>=:' requirements.txt || die
}
python_test() {
local EPYTEST_DESELECT=(
# multiple extra deps (meson, openblas)
# also broken on pypy3*
pythran/tests/test_distutils.py::TestMeson::test_meson_build
# numpy.distutils is dead and broken
pythran/tests/test_distutils.py::TestDistutils
# numpy changes
pythran/tests/test_numpy_func0.py::TestNumpyFunc0::test_cross1
pythran/tests/test_numpy_func0.py::TestNumpyFunc0::test_cross4
)
local EPYTEST_IGNORE=(
pythran/benchmarks
)
if ! has_version "dev-python/ipython[${PYTHON_USEDEP}]"; then
EPYTEST_IGNORE+=(
pythran/tests/test_ipython.py
)
fi
case ${ARCH} in
arm)
EPYTEST_DESELECT+=(
# TODO
pythran/tests/test_numpy_fft.py::TestNumpyFFT::test_fft_3d_axis
pythran/tests/test_numpy_fft.py::TestNumpyFFTN
)
;;
esac
case ${EPYTHON} in
python3.15*)
EPYTEST_DESELECT+=(
pythran/tests/test_array.py::TestArray::test_typecodes
)
;;
esac
# can easily fill up ccache with no real benefit
local -x CCACHE_DISABLE=1
local -x COLUMNS=80
epytest
}

View File

@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-solaris"
BDEPEND="
test? (

View File

@@ -4,6 +4,7 @@ DIST cpp-ipc-ce0773b3e6d5abaa8d104100c5704321113853ca.tar.gz 663617 BLAKE2B 33db
DIST cpp-optparse-2265d647232249a53a03b411099863ceca35f0d3.tar.gz 13010 BLAKE2B 5a23625b98bb45c6e32174de47eb793ab9627e97df4935cdf0d3bfe43fe328488d2db0fa7987030778e03f17b9220a7990a5193e3728f1df4e9923173025979c SHA512 6b99478738980df3186b8487a33c96ee80107ed35fdd36cf615a53f58e9b1e72ab6099c2081e3622fa374f338609e747a1aa0c6c1295f2f71dea1ed17dbc6cf2
DIST dolphin-2603.tar.gz 17523891 BLAKE2B c88fa6b3e0a98127cfeb2daf23a5357c3052651fb0fa109b5f56c9df72e62ac9e03ecdcc1702a93c989f8031dff13918e1a85f082a14b8ed000eec8bf9c0d880 SHA512 b6398da1c8e469bed3bc8aa784f6b8fd7cacce639ac97f827f3bd6cd037160f581a2eb126fc2e7af5f5b0c8c6c287721c7bb87bdc2c0b6a04484b0ce89018521
DIST dolphin-2606.tar.gz 17593311 BLAKE2B 9c627b8acd6e00b824c65e4f5ce0e2c0db36142c902b7ccb7f7f3b333dc9f15f05c06022b2b0767cb59630dabd85ab4eec3c81c46cea0affe2f5d502324421e4 SHA512 b0711a34a28bac747fba549b47838ae85daf99f5a924c15baa36182a97c274c811d1cd230bf860563464cff3f834f711a943615c245b8353c5f35bf5d86950c9
DIST dolphin-2606a.tar.gz 17594928 BLAKE2B 9b063fd5466bf27bd5ef16cfecba72629aed73631533cd00f38ad579ac9548d016460bcf626d5d02337e3274364dc0c3b5af0a6e1c642e268d65dd26d7bb393e SHA512 8fbfd0449a1925e5553bd41ee8332d78111fcb08046c6288558a51500d67537cec3538ea80bab9aa817129a0ac966094a311550b9b385cdc4d37c67a1172181d
DIST imgui-45acd5e0e82f4c954432533ae9985ff0e1aad6d5.tar.gz 1934859 BLAKE2B bbd1824f98716ef7ae09811817e014882a194cbf3cdf5e9efe924c8b722920493ca9776771880310e73740ab88b1498e10ca84bdfad6fc3e47e3fd7041ed01ac SHA512 76fd04305cb48cf6bfa5c5dc884738137bd5c08f2ce12dfd77c1fc9b9294e6c592739d3ec4ceab7d65226775c3be5076710b58bcc40b8abed7da3620db3be511
DIST implot-3da8bd34299965d3b0ab124df743fe3e076fa222.tar.gz 141430 BLAKE2B 5fde32ccb24a8ceaa125e188fce9faf087fa5d2294379fc6bb31071878c4b63adb998aa0100dc48ed7a379d2b1cd49e109a150bec5ebf521f70d661673b4e4a8 SHA512 8a95f76ae4a14adf6f3bcd798d2334d8282ff7b50fc7def6308c0556adcc1dbd151c0a36aa676a82e10e1ae80d1ecc1ac54e705180650eed46d0a609611c73c5
DIST rcheevos-926e4608f8dca7989267c787bbefb3ab1c835ac5.tar.gz 434643 BLAKE2B f54caf0b0506eb4c4d0e2c12c0ab4389fb4b25b1b920dc84eabdf0ecec33e4015ea47309adbee746aec41f752c64dc0a71153479f837ae1ffeeea737a52644df SHA512 a60ca1e5b02230fee20a3cd46f71f121a9cb24d2b6434644e8cc1c922e156dec572a56b46b36724a506735375959c34b1588ef44b7c6deae5fa30e9f35ed07b8

View File

@@ -0,0 +1,314 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# Bumping notes:
# * Update DOLPHIN_TAG_COMMIT to match commit used in tag.
# * Update *_COMMIT for the vendored packages based on their submodules in Externals/.
LLVM_COMPAT=( {18..22} )
LLVM_OPTIONAL=1
inherit branding cmake llvm-r2 pax-utils xdg
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/dolphin-emu/dolphin"
EGIT_SUBMODULES=(
Externals/cpp-ipc/cpp-ipc
Externals/cpp-optparse/cpp-optparse
Externals/imgui/imgui
Externals/implot/implot
Externals/rcheevos/rcheevos
Externals/tinygltf/tinygltf
Externals/Vulkan-Headers
Externals/VulkanMemoryAllocator
Externals/watcher/watcher
)
else
# bug #979791
DOLPHIN_TAG_COMMIT=c77bbaa0f372c3f72281602a8b087206706542cb
CPPIPC_COMMIT=ce0773b3e6d5abaa8d104100c5704321113853ca
CPPOPTPARSE_COMMIT=2265d647232249a53a03b411099863ceca35f0d3
IMGUI_COMMIT=45acd5e0e82f4c954432533ae9985ff0e1aad6d5
IMPLOT_COMMIT=3da8bd34299965d3b0ab124df743fe3e076fa222
RCHEEVOS_COMMIT=926e4608f8dca7989267c787bbefb3ab1c835ac5
TINYGLTF_COMMIT=c5641f2c22d117da7971504591a8f6a41ece488b
VULKAN_HEADERS_COMMIT=39f924b810e561fd86b2558b6711ca68d4363f68
VULKANMEMORYALLOCATOR_COMMIT=3bab6924988e5f19bf36586a496156cf72f70d9f
WATCHER_COMMIT=b03bdcfc11549df595b77239cefe2643943a3e2f
SRC_URI="
https://github.com/dolphin-emu/dolphin/archive/${PV}.tar.gz
-> ${P}.tar.gz
https://github.com/mutouyun/cpp-ipc/archive/${CPPIPC_COMMIT}.tar.gz
-> cpp-ipc-${CPPIPC_COMMIT}.tar.gz
https://github.com/weisslj/cpp-optparse/archive/${CPPOPTPARSE_COMMIT}.tar.gz
-> cpp-optparse-${CPPOPTPARSE_COMMIT}.tar.gz
https://github.com/ocornut/imgui/archive/${IMGUI_COMMIT}.tar.gz
-> imgui-${IMGUI_COMMIT}.tar.gz
https://github.com/epezent/implot/archive/${IMPLOT_COMMIT}.tar.gz
-> implot-${IMPLOT_COMMIT}.tar.gz
https://github.com/syoyo/tinygltf/archive/${TINYGLTF_COMMIT}.tar.gz
-> tinygltf-${TINYGLTF_COMMIT}.tar.gz
https://github.com/KhronosGroup/Vulkan-Headers/archive/${VULKAN_HEADERS_COMMIT}.tar.gz
-> Vulkan-Headers-${VULKAN_HEADERS_COMMIT}.tar.gz
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/archive/${VULKANMEMORYALLOCATOR_COMMIT}.tar.gz
-> VulkanMemoryAllocator-${VULKANMEMORYALLOCATOR_COMMIT}.tar.gz
https://github.com/e-dant/watcher/archive/${WATCHER_COMMIT}.tar.gz
-> watcher-${WATCHER_COMMIT}.tar.gz
retro-achievements? (
https://github.com/RetroAchievements/rcheevos/archive/${RCHEEVOS_COMMIT}.tar.gz
-> rcheevos-${RCHEEVOS_COMMIT}.tar.gz
)
"
KEYWORDS="~amd64 ~arm64"
fi
DESCRIPTION="Gamecube and Wii game emulator"
HOMEPAGE="https://dolphin-emu.org/"
LICENSE="GPL-2+ BSD BSD-2 LGPL-2.1+ MIT ZLIB"
SLOT="0"
IUSE="
alsa bluetooth discord doc egl +evdev ffmpeg +gui llvm log mgba
pulseaudio retro-achievements sdl systemd telemetry test upnp vulkan
"
REQUIRED_USE="
mgba? ( gui )
llvm? ( ${LLVM_REQUIRED_USE} )
"
RESTRICT="!test? ( test )"
# slot op: Uses Qt::GuiPrivate for qplatformnativeinterface.h
RDEPEND="
app-arch/bzip2:=
>=app-arch/lz4-1.8:=
app-arch/xz-utils
>=app-arch/zstd-1.4.0:=
dev-libs/hidapi
>=dev-libs/libfmt-10.1:=
>=dev-util/glslang-1.4.321.0:=
dev-libs/lzo:2
dev-libs/pugixml
dev-libs/xxhash
media-libs/cubeb
>=media-libs/libsfml-3.0:=
media-libs/libspng
>=net-libs/enet-1.3.18:1.3=
net-libs/mbedtls:0=
net-misc/curl
>=sys-libs/minizip-ng-4.0.4:=
x11-libs/libX11
x11-libs/libXi
x11-libs/libXrandr
virtual/libusb:1
virtual/opengl
>=virtual/zlib-1.3.1:=
alsa? ( media-libs/alsa-lib )
bluetooth? ( net-wireless/bluez:= )
evdev? (
dev-libs/libevdev
virtual/libudev
)
ffmpeg? ( media-video/ffmpeg:= )
gui? (
dev-qt/qtbase:6=[X,gui,widgets]
dev-qt/qtsvg:6
)
llvm? ( $(llvm_gen_dep 'llvm-core/llvm:${LLVM_SLOT}=') )
mgba? ( >=games-emulation/mgba-0.11:= )
pulseaudio? ( media-libs/libpulse )
sdl? ( >=media-libs/libsdl3-3.2.20 )
systemd? ( sys-apps/systemd:0= )
upnp? ( net-libs/miniupnpc:= )
"
DEPEND="
${RDEPEND}
egl? ( media-libs/libglvnd )
test? ( dev-cpp/gtest )
"
BDEPEND="
sys-devel/gettext
virtual/pkgconfig
"
# vulkan-loader required for vulkan backend which can be selected
# at runtime.
RDEPEND+="
vulkan? ( media-libs/vulkan-loader )
"
# [directory]=license
declare -A KEEP_BUNDLED=(
# please keep this list in CMakeLists.txt order
[Bochs_disasm]=LGPL-2.1+
[cpp-optparse]=MIT
[imgui]=MIT
[implot]=MIT
[tinygltf]=MIT
[FreeSurround]=GPL-2+
[soundtouch]=LGPL-2.1+
# FIXME: discord-rpc not packaged
[discord-rpc]=MIT
[picojson]=BSD-2
[expr]=MIT
[rangeset]=ZLIB
[FatFs]=FatFs
[rcheevos]=MIT
[Vulkan-Headers]="|| ( Apache-2.0 MIT )"
[VulkanMemoryAllocator]=MIT
[watcher]=MIT
[cpp-ipc]=MIT
)
add_bundled_licenses() {
for license in ${KEEP_BUNDLED[@]}; do
LICENSE+=" ${license}"
done
}
add_bundled_licenses
PATCHES=(
"${FILESDIR}"/dolphin-2603-mbgba-definitions.patch
)
pkg_setup() {
use llvm && llvm-r2_pkg_setup
}
src_prepare() {
if [[ ${PV} != *9999 ]]; then
# Set tag commit to fix netplay against builds on other platforms, bug #979791
eapply "${FILESDIR}"/dolphin-2606-git-rev.patch
sed -e "s|@@GENTOO_DOLPHIN_COMMIT@@|${DOLPHIN_TAG_COMMIT}|" \
-i CMake/ScmRevGen.cmake || die
mv -T "${WORKDIR}/cpp-ipc-${CPPIPC_COMMIT}" Externals/cpp-ipc/cpp-ipc || die
mv -T "${WORKDIR}/cpp-optparse-${CPPOPTPARSE_COMMIT}" Externals/cpp-optparse/cpp-optparse || die
mv -T "${WORKDIR}/imgui-${IMGUI_COMMIT}" Externals/imgui/imgui || die
mv -T "${WORKDIR}/implot-${IMPLOT_COMMIT}" Externals/implot/implot || die
mv -T "${WORKDIR}/tinygltf-${TINYGLTF_COMMIT}" Externals/tinygltf/tinygltf || die
mv -T "${WORKDIR}/Vulkan-Headers-${VULKAN_HEADERS_COMMIT}" Externals/Vulkan-Headers || die
mv -T "${WORKDIR}/VulkanMemoryAllocator-${VULKANMEMORYALLOCATOR_COMMIT}" Externals/VulkanMemoryAllocator || die
mv -T "${WORKDIR}/watcher-${WATCHER_COMMIT}" Externals/watcher/watcher || die
if use retro-achievements; then
mv -T "${WORKDIR}/rcheevos-${RCHEEVOS_COMMIT}" Externals/rcheevos/rcheevos || die
fi
fi
cmake_src_prepare
local s remove=()
for s in Externals/*; do
[[ -f ${s} ]] && continue
if ! has "${s#Externals/}" "${!KEEP_BUNDLED[@]}"; then
remove+=( "${s}" )
fi
done
einfo "removing sources: ${remove[*]}"
rm -r "${remove[@]}" || die
# Use ccache only when user did set FEATURES=ccache (or similar)
# # not when ccache binary is present in system (automagic).
sed -e '/include(CCache)/d' -i CMakeLists.txt || die
# Remove dirty suffix: needed for netplay
sed -i -e 's/--dirty/&=""/' CMake/ScmRevGen.cmake || die
}
src_configure() {
local mycmakeargs=(
-DDSPTOOL=ON
-DENABLE_ALSA=$(usex alsa)
-DENABLE_ANALYTICS=$(usex telemetry)
-DENABLE_AUTOUPDATE=OFF
-DENABLE_BLUEZ=$(usex bluetooth)
-DENABLE_CLI_TOOL=ON
-DENABLE_CUBEB=ON
-DENABLE_EGL=$(usex egl)
-DENABLE_EVDEV=$(usex evdev)
-DENABLE_HWDB=$(usex evdev)
-DENABLE_LLVM=$(usex llvm)
-DENABLE_LTO=OFF # just adds -flto, user can do that via flags
-DENABLE_NOGUI=$(usex !gui)
-DENABLE_PULSEAUDIO=$(usex pulseaudio)
-DENABLE_QT=$(usex gui)
-DENABLE_SDL=$(usex sdl)
-DENABLE_TESTS=$(usex test)
-DENABLE_VULKAN=$(usex vulkan)
-DENCODE_FRAMEDUMPS=$(usex ffmpeg)
-DFASTLOG=$(usex log)
-DUSE_DISCORD_PRESENCE=$(usex discord)
-DUSE_MGBA=$(usex mgba)
-DUSE_RETRO_ACHIEVEMENTS=$(usex retro-achievements)
-DUSE_UPNP=$(usex upnp)
-DCMAKE_DISABLE_FIND_PACKAGE_SYSTEMD=$(usex !systemd)
# Use system libraries
-DUSE_SYSTEM_FMT=ON
-DUSE_SYSTEM_GLSLANG=ON
-DUSE_SYSTEM_PUGIXML=ON
-DUSE_SYSTEM_ENET=ON
-DUSE_SYSTEM_XXHASH=ON
-DUSE_SYSTEM_BZIP2=ON
-DUSE_SYSTEM_LIBLZMA=ON
-DUSE_SYSTEM_ZSTD=ON
-DUSE_SYSTEM_ZLIB=ON
-DUSE_SYSTEM_MINIZIP-NG=ON
-DUSE_SYSTEM_LZO=ON
-DUSE_SYSTEM_LZ4=ON
-DUSE_SYSTEM_SPNG=ON
-DUSE_SYSTEM_CUBEB=ON
-DUSE_SYSTEM_LIBUSB=ON
-DUSE_SYSTEM_SFML=ON
-DUSE_SYSTEM_MBEDTLS=ON
-DUSE_SYSTEM_CURL=ON
-DUSE_SYSTEM_ICONV=ON
-DUSE_SYSTEM_HIDAPI=ON
-DDISTRIBUTOR="${BRANDING_OS_NAME}"
# Undo cmake.eclass's defaults.
# All dolphin's libraries are private
# and rely on circular dependency resolution.
-DBUILD_SHARED_LIBS=OFF
# Avoid warning spam around unset variables.
-Wno-dev
)
# System installed git shouldnt affect non live builds
[[ ${PV} != *9999 ]] && mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_Git=ON )
use test && mycmakeargs+=( -DUSE_SYSTEM_GTEST=ON )
use mgba && mycmakeargs+=( -DUSE_SYSTEM_LIBMGBA=ON )
use sdl && mycmakeargs+=( -DUSE_SYSTEM_SDL3=ON )
use upnp && mycmakeargs+=( -DUSE_SYSTEM_MINIUPNPC=ON )
cmake_src_configure
}
src_test() {
cmake_build unittests
}
src_install() {
cmake_src_install
dodoc Readme.md
if use doc; then
dodoc -r docs/ActionReplay docs/DSP docs/WiiMote
fi
# Add pax markings for hardened systems
pax-mark -m "${ED}"/usr/bin/"${PN}"{-emu{,-nogui},-tool}
}

View File

@@ -13,4 +13,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,339 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit bash-completion-r1 elisp-common llvm.org multilib
DESCRIPTION="Common files shared between multiple slots of clang"
HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="0"
IUSE="
default-compiler-rt default-libcxx default-lld
bootstrap-prefix cet emacs hardened llvm-libunwind
"
PDEPEND="
default-compiler-rt? (
llvm-runtimes/clang-runtime:${LLVM_MAJOR}[compiler-rt]
llvm-libunwind? ( llvm-runtimes/libunwind[static-libs] )
!llvm-libunwind? ( sys-libs/libunwind[static-libs] )
)
!default-compiler-rt? ( sys-devel/gcc )
default-libcxx? ( >=llvm-runtimes/libcxx-${PV}[static-libs] )
!default-libcxx? ( sys-devel/gcc )
default-lld? ( >=llvm-core/lld-${PV} )
!default-lld? ( sys-devel/binutils )
"
# enforce flags on clang-runtime as well to aid transition
PDEPEND+="
llvm-runtimes/clang-runtime[default-compiler-rt(-)?,default-libcxx(-)?,default-lld(-)?,llvm-libunwind(-)?]
emacs? ( >=app-editors/emacs-26.3:* )
"
IDEPEND="
!default-compiler-rt? ( sys-devel/gcc-config )
!default-libcxx? ( sys-devel/gcc-config )
"
BDEPEND="
emacs? ( >=app-editors/emacs-26.3:* )
"
LLVM_COMPONENTS=( clang/utils clang/tools/clang-format )
llvm.org_set_globals
SITEFILE="50clang-gentoo.el"
pkg_pretend() {
[[ ${CLANG_IGNORE_DEFAULT_RUNTIMES} ]] && return
local flag missing_flags=()
for flag in default-{compiler-rt,libcxx,lld}; do
if ! use "${flag}" && has_version "llvm-core/clang[${flag}]"; then
missing_flags+=( "${flag}" )
fi
done
if [[ ${missing_flags[@]} ]]; then
eerror "It seems that you have the following flags set on llvm-core/clang:"
eerror
eerror " ${missing_flags[*]}"
eerror
eerror "The default runtimes are now set via flags on llvm-core/clang-common."
eerror "The build is being aborted to prevent breakage. Please either set"
eerror "the respective flags on this ebuild, e.g.:"
eerror
eerror " llvm-core/clang-common ${missing_flags[*]}"
eerror
eerror "or build with CLANG_IGNORE_DEFAULT_RUNTIMES=1."
die "Mismatched defaults detected between llvm-core/clang and llvm-core/clang-common"
fi
}
_doclang_cfg() {
local triple="${1}"
local tool
for tool in ${triple}-clang{,++}; do
newins - "${tool}.cfg" <<-EOF
# This configuration file is used by ${tool} driver.
@gentoo-common.cfg
@gentoo-common-ld.cfg
EOF
if [[ ${triple} == x86_64* ]]; then
cat >> "${ED}/etc/clang/${tool}.cfg" <<-EOF || die
@gentoo-cet.cfg
EOF
fi
done
if use kernel_Darwin; then
cat >> "${ED}/etc/clang/${triple}-clang++.cfg" <<-EOF || die
-lc++abi
EOF
fi
newins - "${triple}-clang-cpp.cfg" <<-EOF
# This configuration file is used by the ${triple}-clang-cpp driver.
@gentoo-common.cfg
EOF
if [[ ${triple} == x86_64* ]]; then
cat >> "${ED}/etc/clang/${triple}-clang-cpp.cfg" <<-EOF || die
@gentoo-cet.cfg
EOF
fi
# Install symlinks for triples with other vendor strings since some
# programs insist on mangling the triple.
local vendor
for vendor in gentoo pc unknown; do
local vendor_triple="${triple%%-*}-${vendor}-${triple#*-*-}"
for tool in clang{,++,-cpp}; do
if [[ ! -f "${ED}/etc/clang/${vendor_triple}-${tool}.cfg" ]]; then
dosym "${triple}-${tool}.cfg" "/etc/clang/${vendor_triple}-${tool}.cfg"
fi
done
done
}
doclang_cfg() {
local triple="${1}"
_doclang_cfg ${triple}
# LLVM may have different arch names in some cases. For example in x86
# profiles the triple uses i686, but llvm will prefer i386 if invoked
# with "clang" on x86 or "clang -m32" on x86_64. The gentoo triple will
# be used if invoked through ${CHOST}-clang{,++,-cpp} though.
#
# To make sure the correct triples are installed,
# see Triple::getArchTypeName() in llvm/lib/TargetParser/Triple.cpp
# and compare with CHOST values in profiles.
local abi=${triple%%-*}
case ${abi} in
armv4l|armv4t|armv5tel|armv6j|armv7a)
_doclang_cfg ${triple/${abi}/arm}
;;
i686)
_doclang_cfg ${triple/${abi}/i386}
;;
sparc)
_doclang_cfg ${triple/${abi}/sparcel}
;;
sparc64)
_doclang_cfg ${triple/${abi}/sparcv9}
;;
esac
}
src_compile() {
default
use emacs && elisp-compile ../tools/clang-format/clang-format.el
}
src_install() {
newbashcomp bash-autocomplete.sh clang
insinto /etc/clang
newins - gentoo-runtimes.cfg <<-EOF
# This file is initially generated by llvm-runtimes/clang-runtime.
# It is used to control the default runtimes using by clang.
--rtlib=$(usex default-compiler-rt compiler-rt libgcc)
--unwindlib=$(usex default-compiler-rt libunwind libgcc)
--stdlib=$(usex default-libcxx libc++ libstdc++)
-fuse-ld=$(usex default-lld lld bfd)
EOF
newins - gentoo-gcc-install.cfg <<-EOF
# This file is maintained by gcc-config.
# It is used to specify the selected GCC installation.
EOF
newins - gentoo-common.cfg <<-EOF
# This file contains flags common to clang, clang++ and clang-cpp.
@gentoo-runtimes.cfg
@gentoo-gcc-install.cfg
@gentoo-hardened.cfg
# bug #870001
-include "${EPREFIX}/usr/include/gentoo/maybe-stddefs.h"
EOF
# clang-cpp does not like link args being passed to it when directly
# invoked, so use a separate configuration file.
newins - gentoo-common-ld.cfg <<-EOF
# This file contains flags common to clang and clang++
@gentoo-hardened-ld.cfg
EOF
# Baseline hardening (bug #851111)
newins - gentoo-hardened.cfg <<-EOF
# Some of these options are added unconditionally, regardless of
# USE=hardened, for parity with sys-devel/gcc.
-Xarch_host -fstack-clash-protection
-Xarch_host -fstack-protector-strong
-fPIE
-include "${EPREFIX}/usr/include/gentoo/fortify.h"
EOF
newins - gentoo-cet.cfg <<-EOF
-Xarch_host -fcf-protection=$(usex cet full none)
EOF
if use kernel_Darwin; then
newins - gentoo-hardened-ld.cfg <<-EOF
# There was -Wl,-z,relro here, but it's not supported on Mac
# TODO: investigate whether -bind_at_load or -read_only_stubs will do the job
EOF
else
newins - gentoo-hardened-ld.cfg <<-EOF
# Some of these options are added unconditionally, regardless of
# USE=hardened, for parity with sys-devel/gcc.
-Wl,-z,relro
-Wl,-z,now
EOF
fi
dodir /usr/include/gentoo
cat >> "${ED}/usr/include/gentoo/maybe-stddefs.h" <<-EOF || die
/* __has_include is an extension, but it's fine, because this is only
for Clang anyway. */
#if defined __has_include && __has_include (<stdc-predef.h>) && !defined(__GLIBC__)
# include <stdc-predef.h>
#endif
EOF
local fortify_level=$(usex hardened 3 2)
# We have to do this because glibc's headers warn if F_S is set
# without optimization and that would at the very least be very noisy
# during builds and at worst trigger many -Werror builds.
cat >> "${ED}/usr/include/gentoo/fortify.h" <<- EOF || die
#ifdef __clang__
# pragma clang system_header
#endif
#ifndef _FORTIFY_SOURCE
# if defined(__has_feature)
# define __GENTOO_HAS_FEATURE(x) __has_feature(x)
# else
# define __GENTOO_HAS_FEATURE(x) 0
# endif
#
# if !defined(__OPTIMIZE__) || __OPTIMIZE__ == 0
# elif !defined(__STDC_HOSTED__) || __STDC_HOSTED__ != 1
# elif defined(__SANITIZE_ADDRESS__)
# elif __GENTOO_HAS_FEATURE(address_sanitizer)
# elif __GENTOO_HAS_FEATURE(hwaddress_sanitizer)
# elif __GENTOO_HAS_FEATURE(memory_sanitizer)
# elif __GENTOO_HAS_FEATURE(numerical_stability_sanitizer)
# elif __GENTOO_HAS_FEATURE(realtime_sanitizer)
# elif __GENTOO_HAS_FEATURE(thread_sanitizer)
# elif defined(_GENTOO_NO_FORTIFY_SOURCE)
# else
# define _FORTIFY_SOURCE ${fortify_level}
# endif
#
# undef __GENTOO_HAS_FEATURE
#endif
EOF
# TODO: Maybe -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST for
# non-hardened?
if use hardened ; then
cat >> "${ED}/etc/clang/gentoo-hardened.cfg" <<-EOF || die
# Options below are conditional on USE=hardened.
-Xarch_host -D_GLIBCXX_ASSERTIONS
# Analogue to GLIBCXX_ASSERTIONS
# https://libcxx.llvm.org/UsingLibcxx.html#assertions-mode
# https://libcxx.llvm.org/Hardening.html#using-hardened-mode
-Xarch_host -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE
EOF
cat >> "${ED}/etc/clang/gentoo-hardened-ld.cfg" <<-EOF || die
# Options below are conditional on USE=hardened.
EOF
fi
# We only install config files for supported ABIs because unprefixed tools
# might be used for crosscompilation where e.g. PIE may not be supported.
# See bug #912237 and bug #901247. Just ${CHOST} won't do due to bug #912685.
local abi
for abi in $(get_all_abis); do
local abi_chost=$(get_abi_CHOST "${abi}")
doclang_cfg "${abi_chost}"
done
if use kernel_Darwin; then
cat >> "${ED}/etc/clang/gentoo-common.cfg" <<-EOF || die
# Gentoo Prefix on Darwin
-Wl,-search_paths_first
EOF
if use bootstrap-prefix ; then
# bootstrap-prefix is only set during stage2 of bootstrapping
# Prefix, where EPREFIX is set to EPREFIX/tmp.
# Here we need to point it at the future lib dir of the stage3's
# EPREFIX.
cat >> "${ED}/etc/clang/gentoo-common.cfg" <<-EOF || die
-Wl,-rpath,${EPREFIX}/../usr/lib
-Wl,-L,${EPREFIX}/../usr/lib
-isystem ${EPREFIX}/../usr/include
EOF
fi
# Using -Wl,-L instead of -L to trick compiler driver to put it
# after -isysroot's internal -L
cat >> "${ED}/etc/clang/gentoo-common.cfg" <<-EOF || die
-Wl,-rpath,${EPREFIX}/usr/lib
-Wl,-L,${EPREFIX}/usr/lib
-isystem ${EPREFIX}/usr/include
-isysroot ${EPREFIX}/MacOSX.sdk
EOF
fi
if use emacs ; then
elisp-install clang ../tools/clang-format/clang-format.{el,elc}
elisp-make-site-file "${SITEFILE}" clang
fi
}
pkg_preinst() {
if has_version -b sys-devel/gcc-config && has_version sys-devel/gcc
then
local gcc_path=$(gcc-config --get-lib-path 2>/dev/null)
if [[ -n ${gcc_path} ]]; then
cat >> "${ED}/etc/clang/gentoo-gcc-install.cfg" <<-EOF
--gcc-install-dir="${gcc_path%%:*}"
EOF
fi
fi
}
pkg_postinst() {
use emacs && elisp-site-regen
}
pkg_postrm() {
use emacs && elisp-site-regen
}

View File

@@ -21,4 +21,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,467 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake llvm.org multilib multilib-minimal
inherit prefix python-single-r1 toolchain-funcs
DESCRIPTION="C language family frontend for LLVM"
HOMEPAGE="https://llvm.org/"
# MSVCSetupApi.h: MIT
# sorttable.js: MIT
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA MIT"
SLOT="${LLVM_MAJOR}/${LLVM_SOABI}"
IUSE="+debug doc +extra ieee-long-double +pie +static-analyzer test xml"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
RESTRICT="!test? ( test )"
DEPEND="
~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=,${MULTILIB_USEDEP}]
static-analyzer? ( dev-lang/perl:* )
xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
"
RDEPEND="
${PYTHON_DEPS}
${DEPEND}
>=llvm-core/clang-common-${PV}
"
BDEPEND="
${PYTHON_DEPS}
test? ( ~llvm-core/lld-${PV} )
xml? ( virtual/pkgconfig )
"
PDEPEND="
llvm-runtimes/clang-runtime:${LLVM_MAJOR}
llvm-core/clang-toolchain-symlinks:${LLVM_MAJOR}
"
LLVM_COMPONENTS=( clang clang-tools-extra cmake mlir/utils/pygments utils/docs )
LLVM_TEST_COMPONENTS=( llvm/utils )
LLVM_MANPAGES=1
LLVM_USE_TARGETS=llvm+eq
llvm.org_set_globals
[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
BDEPEND+="
$(python_gen_cond_dep '
dev-python/myst-parser[${PYTHON_USEDEP}]
dev-python/sphinx[${PYTHON_USEDEP}]
')
"
[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
# Multilib notes:
# 1. ABI_* flags control ABIs libclang* is built for only.
# 2. clang is always capable of compiling code for all ABIs for enabled
# target. However, you will need appropriate crt* files (installed
# e.g. by sys-devel/gcc and sys-libs/glibc).
# 3. ${CHOST}-clang wrappers are always installed for all ABIs included
# in the current profile (i.e. alike supported by sys-devel/gcc).
#
# Therefore: use llvm-core/clang[${MULTILIB_USEDEP}] only if you need
# multilib clang* libraries (not runtime, not wrappers).
src_prepare() {
# create extra parent dir for relative CLANG_RESOURCE_DIR access
mkdir -p x/y || die
BUILD_DIR=${WORKDIR}/x/y/clang
llvm.org_src_prepare
# add Gentoo Portage Prefix for Darwin (see prefix-dirs.patch)
eprefixify \
lib/Lex/InitHeaderSearch.cpp \
lib/Driver/ToolChains/Darwin.cpp || die
if ! use prefix-guest && [[ -n ${EPREFIX} ]]; then
sed -i "/LibDir.*Loader/s@return \"\/\"@return \"${EPREFIX}/\"@" lib/Driver/ToolChains/Linux.cpp || die
fi
}
check_distribution_components() {
if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
local all_targets=() my_targets=() l
cd "${BUILD_DIR}" || die
while read -r l; do
if [[ ${l} == install-*-stripped:* ]]; then
l=${l#install-}
l=${l%%-stripped*}
case ${l} in
# meta-targets
clang-libraries|distribution)
continue
;;
# tools
clang|clangd|clang-*)
;;
# static libraries
clang*|findAllSymbols)
continue
;;
# conditional to USE=doc
docs-clang-html|docs-clang-tools-html)
use doc || continue
;;
# built only with tests
c-index-test)
continue
;;
esac
all_targets+=( "${l}" )
fi
done < <(${NINJA} -t targets all)
while read -r l; do
my_targets+=( "${l}" )
done < <(get_distribution_components $"\n")
local add=() remove=()
for l in "${all_targets[@]}"; do
if ! has "${l}" "${my_targets[@]}"; then
add+=( "${l}" )
fi
done
for l in "${my_targets[@]}"; do
if ! has "${l}" "${all_targets[@]}"; then
remove+=( "${l}" )
fi
done
if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
eerror "get_distribution_components() is outdated!"
eerror " Add: ${add[*]}"
eerror "Remove: ${remove[*]}"
die "Update get_distribution_components()!"
fi
cd - >/dev/null || die
fi
}
get_distribution_components() {
local sep=${1-;}
local out=(
# common stuff
clang-cmake-exports
clang-headers
clang-resource-headers
libclang-headers
aarch64-resource-headers
arm-common-resource-headers
arm-resource-headers
core-resource-headers
cuda-resource-headers
hexagon-resource-headers
hip-resource-headers
hlsl-resource-headers
mips-resource-headers
opencl-resource-headers
openmp-resource-headers
ppc-htm-resource-headers
ppc-resource-headers
riscv-resource-headers
spirv-resource-headers
systemz-resource-headers
utility-resource-headers
ve-resource-headers
webassembly-resource-headers
windows-resource-headers
x86-resource-headers
# libs
clang-cpp
libclang
)
if multilib_is_native_abi; then
out+=(
# common stuff
bash-autocomplete
libclang-python-bindings
# tools
clang
clang-format
clang-installapi
clang-linker-wrapper
clang-nvlink-wrapper
clang-offload-bundler
clang-refactor
clang-repl
clang-scan-deps
clang-ssaf-analyzer
clang-ssaf-format
clang-ssaf-linker
clang-sycl-linker
diagtool
hmaptool
offload-arch
# needed for cross-compiling Clang
clang-tblgen
)
if use extra; then
out+=(
# extra tools
clang-apply-replacements
clang-change-namespace
clang-doc
clang-include-cleaner
clang-include-fixer
clang-move
clang-query
clang-reorder-fields
clang-tidy
clang-tidy-headers
clangd
find-all-symbols
modularize
pp-trace
)
use kernel_Darwin && out+=( ClangdXPCLib )
fi
if llvm_are_manpages_built; then
out+=( docs-clang-man )
use extra && out+=( docs-clang-tools-man )
fi
if use doc; then
out+=( docs-clang-html )
use extra && out+=( docs-clang-tools-html )
fi
use static-analyzer && out+=(
clang-check
clang-extdef-mapping
scan-build
scan-build-py
scan-view
)
fi
printf "%s${sep}" "${out[@]}"
}
multilib_src_configure() {
local mycmakeargs=(
-DDEFAULT_SYSROOT=$(usex prefix-guest "" "${EPREFIX}")
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-DLLVM_ROOT="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-DCLANG_CONFIG_FILE_SYSTEM_DIR="${EPREFIX}/etc/clang/${LLVM_MAJOR}"
-DCLANG_CONFIG_FILE_USER_DIR="~/.config/clang"
# relative to bindir
-DCLANG_RESOURCE_DIR="../../../../lib/clang/${LLVM_MAJOR}"
-DBUILD_SHARED_LIBS=OFF
-DCLANG_LINK_CLANG_DYLIB=ON
-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
-DCLANG_INCLUDE_TESTS=$(usex test)
-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
# these are not propagated reliably, so redefine them
-DLLVM_ENABLE_EH=ON
-DLLVM_ENABLE_RTTI=ON
# libgomp support fails to find headers without explicit -I
# furthermore, it provides only syntax checking
-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-DCLANG_DEFAULT_PIE_ON_LINUX=$(usex pie)
-DCLANG_ENABLE_LIBXML2=$(usex xml)
-DCLANG_ENABLE_OBJC_REWRITER=ON
-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
# TODO: CLANG_ENABLE_HLSL?
-DPython3_EXECUTABLE="${PYTHON}"
)
if ! use elibc_musl; then
mycmakeargs+=(
-DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=$(usex ieee-long-double)
)
fi
use test && mycmakeargs+=(
-DLLVM_BUILD_TESTS=ON
-DLLVM_LIT_ARGS="$(get_lit_flags)"
)
if multilib_is_native_abi; then
local build_docs=OFF
if llvm_are_manpages_built; then
build_docs=ON
mycmakeargs+=(
-DLLVM_BUILD_DOCS=ON
-DLLVM_ENABLE_SPHINX=ON
-DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
-DSPHINX_WARNINGS_AS_ERRORS=OFF
)
if use extra; then
mycmakeargs+=(
-DCLANG-TOOLS_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/tools-extra"
)
fi
fi
mycmakeargs+=(
-DCLANG_INCLUDE_DOCS=${build_docs}
)
fi
if multilib_native_use extra; then
mycmakeargs+=(
-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="${WORKDIR}"/clang-tools-extra
-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=${build_docs}
)
else
mycmakeargs+=(
-DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF
)
fi
if tc-is-cross-compiler; then
has_version -b llvm-core/clang:${LLVM_MAJOR} ||
die "llvm-core/clang:${LLVM_MAJOR} is required on the build host."
local tools_bin=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin
mycmakeargs+=(
-DLLVM_TOOLS_BINARY_DIR="${tools_bin}"
-DCLANG_TABLEGEN="${tools_bin}"/clang-tblgen
)
fi
# LLVM can have very high memory consumption while linking,
# exhausting the limit on 32-bit linker executable
use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
cmake_src_configure
multilib_is_native_abi && check_distribution_components
}
multilib_src_compile() {
cmake_build distribution
}
multilib_src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
local test_targets=( check-clang )
if multilib_native_use extra; then
test_targets+=(
check-clang-tools
check-clangd
)
fi
cmake_build "${test_targets[@]}"
}
src_install() {
MULTILIB_WRAPPED_HEADERS=(
/usr/include/clang/Config/config.h
)
multilib-minimal_src_install
# Move runtime headers to /usr/lib/clang, where they belong
mv "${ED}"/usr/include/clangrt "${ED}"/usr/lib/clang || die
# move (remaining) wrapped headers back
if use extra; then
mv "${T}"/clang-tidy "${ED}"/usr/include/ || die
fi
mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
# Apply CHOST and version suffix to clang tools
local clang_tools=( clang clang++ clang-cl clang-cpp )
local abi i
# cmake gives us:
# - clang-X
# - clang -> clang-X
# - clang++, clang-cl, clang-cpp -> clang
# we want to have:
# - clang-X
# - clang++-X, clang-cl-X, clang-cpp-X -> clang-X
# - clang, clang++, clang-cl, clang-cpp -> clang*-X
# also in CHOST variant
for i in "${clang_tools[@]:1}"; do
rm "${ED}/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}" || die
dosym "clang-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}-${LLVM_MAJOR}"
dosym "${i}-${LLVM_MAJOR}" "/usr/lib/llvm/${LLVM_MAJOR}/bin/${i}"
done
# now create target symlinks for all supported ABIs
for abi in $(get_all_abis); do
local abi_chost=$(get_abi_CHOST "${abi}")
for i in "${clang_tools[@]}"; do
dosym "${i}-${LLVM_MAJOR}" \
"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}-${LLVM_MAJOR}"
dosym "${abi_chost}-${i}-${LLVM_MAJOR}" \
"/usr/lib/llvm/${LLVM_MAJOR}/bin/${abi_chost}-${i}"
done
done
}
multilib_src_install() {
DESTDIR=${D} cmake_build install-distribution
# move headers to /usr/include for wrapping & ABI mismatch checks
# (also drop the version suffix from runtime headers)
rm -rf "${ED}"/usr/include || die
mv "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include "${ED}"/usr/include || die
mv "${ED}"/usr/lib/clang "${ED}"/usr/include/clangrt || die
if multilib_native_use extra; then
# don't wrap clang-tidy headers, the list is too long
# (they're fine for non-native ABI but enabling the targets is problematic)
mv "${ED}"/usr/include/clang-tidy "${T}/" || die
fi
}
multilib_src_install_all() {
python_fix_shebang "${ED}"
if use static-analyzer; then
python_optimize "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/share/scan-view
fi
docompress "/usr/lib/llvm/${LLVM_MAJOR}/share/man"
llvm_install_manpages
# match 'html' non-compression
use doc && docompress -x "/usr/share/doc/${PF}/tools-extra"
# +x for some reason; TODO: investigate
use static-analyzer && fperms a-x "/usr/lib/llvm/${LLVM_MAJOR}/share/man/man1/scan-build.1"
}
pkg_postinst() {
if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
eselect compiler-shadow update all
fi
elog "You can find additional utility scripts in:"
elog " ${EROOT}/usr/lib/llvm/${LLVM_MAJOR}/share/clang"
if use extra; then
elog "Some of them are vim integration scripts (with instructions inside)."
elog "The run-clang-tidy.py script requires the following additional package:"
elog " dev-python/pyyaml"
fi
}
pkg_postrm() {
if [[ -z ${ROOT} && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
eselect compiler-shadow clean all
fi
}

View File

@@ -5,4 +5,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,101 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake flag-o-matic llvm.org python-any-r1 toolchain-funcs
DESCRIPTION="LLVM's Fortran frontend"
HOMEPAGE="https://flang.llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions"
SLOT="${LLVM_MAJOR}/${LLVM_SOABI}"
IUSE="+clang +debug test"
RESTRICT="!test? ( test )"
DEPEND="
~llvm-core/clang-${PV}[debug=]
~llvm-core/llvm-${PV}[debug=]
~llvm-core/mlir-${PV}[debug=]
"
RDEPEND="
${DEPEND}
"
PDEPEND="
>=llvm-runtimes/flang-rt-${PV}:${LLVM_MAJOR}
"
BDEPEND="
clang? ( llvm-core/clang )
test? (
$(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
)
"
LLVM_COMPONENTS=( flang cmake )
LLVM_TEST_COMPONENTS=( clang/test/Driver mlir/test/lib )
LLVM_USE_TARGETS=llvm+eq
llvm.org_set_globals
python_check_deps() {
python_has_version "dev-python/lit[${PYTHON_USEDEP}]"
}
pkg_pretend() {
if ! use clang && tc-is-gcc; then
ewarn "Building using GCC requires lots of memory (up to 10 GiB per process)."
ewarn "Consider enabling USE=clang."
ewarn "See https://gcc.gnu.org/PR119705"
fi
}
pkg_setup() {
use test && python-any-r1_pkg_setup
}
src_configure() {
if use clang; then
# Only do this conditionally to allow overriding with
# e.g. CC=clang-13 in case of breakage
if ! tc-is-clang ; then
local -x CC=${CHOST}-clang
local -x CXX=${CHOST}-clang++
fi
strip-unsupported-flags
fi
local mycmakeargs=(
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
-DCLANG_RESOURCE_DIR="../../../clang/${LLVM_MAJOR}"
-DBUILD_SHARED_LIBS=OFF
-DMLIR_LINK_MLIR_DYLIB=ON
# flang does not feature a dylib, so do not install libraries
# or headers
-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON
# installed by llvm-runtimes/flang-rt
-DFLANG_INCLUDE_RUNTIME=OFF
# TODO: always enable to obtain reproducible tools
-DFLANG_INCLUDE_TESTS=$(usex test)
-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
)
use test && mycmakeargs+=(
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
)
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
cmake_src_configure
}
src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
cmake_build check-flang
}

View File

@@ -13,4 +13,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,95 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake flag-o-matic llvm.org python-any-r1 toolchain-funcs
DESCRIPTION="The LLVM linker (link editor)"
HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="${LLVM_MAJOR}/${LLVM_SOABI}"
IUSE="+debug test zstd"
RESTRICT="!test? ( test )"
DEPEND="
~llvm-core/llvm-${PV}[debug=,zstd=]
virtual/zlib:=
zstd? ( app-arch/zstd:= )
"
RDEPEND="
${DEPEND}
!llvm-core/lld:0
"
BDEPEND="
llvm-core/llvm:${LLVM_MAJOR}
test? (
$(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
)
"
PDEPEND="
>=llvm-core/lld-toolchain-symlinks-16-r2:${LLVM_MAJOR}
"
LLVM_COMPONENTS=( lld cmake libunwind/include/mach-o )
LLVM_TEST_COMPONENTS=( llvm/utils/dtlto )
LLVM_USE_TARGETS=llvm+eq
llvm.org_set_globals
python_check_deps() {
python_has_version "dev-python/lit[${PYTHON_USEDEP}]"
}
pkg_setup() {
use test && python-any-r1_pkg_setup
}
src_unpack() {
llvm.org_src_unpack
# Directory ${WORKDIR}/llvm does not exist with USE="-test",
# but LLVM_MAIN_SRC_DIR="${WORKDIR}/llvm" is set below,
# and ${LLVM_MAIN_SRC_DIR}/../libunwind/include is used by build system
# (lld/MachO/CMakeLists.txt) and is expected to be resolvable
# to existent directory ${WORKDIR}/libunwind/include.
mkdir -p "${WORKDIR}/llvm" || die
}
src_configure() {
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
# https://gcc.gnu.org/PR121495 (bug #958469)
use arm64 && tc-is-gcc && [[ $(gcc-major-version) -ge 14 ]] && append-flags -mearly-ra=none
use elibc_musl && append-ldflags -Wl,-z,stack-size=2097152
local mycmakeargs=(
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
-DBUILD_SHARED_LIBS=ON
-DLLVM_INCLUDE_TESTS=$(usex test)
-DLLVM_ENABLE_ZLIB=FORCE_ON
-DLLVM_ENABLE_ZSTD=$(usex zstd FORCE_ON OFF)
-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
)
use test && mycmakeargs+=(
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
-DPython3_EXECUTABLE="${PYTHON}"
)
tc-is-cross-compiler && mycmakeargs+=(
-DLLVM_TABLEGEN_EXE="${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/bin/llvm-tblgen"
)
cmake_src_configure
}
src_test() {
local -x LIT_PRESERVES_TMP=1
cmake_build check-lld
}

View File

@@ -14,4 +14,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,116 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake flag-o-matic llvm.org python-single-r1
DESCRIPTION="The LLVM debugger"
HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="0/${LLVM_SOABI}"
IUSE="+debug debuginfod +libedit lzma ncurses +python test +tree-sitter +xml"
RESTRICT="test"
REQUIRED_USE=${PYTHON_REQUIRED_USE}
DEPEND="
debuginfod? (
net-misc/curl:=
dev-cpp/cpp-httplib:=
)
libedit? ( dev-libs/libedit:0= )
lzma? ( app-arch/xz-utils:= )
ncurses? ( >=sys-libs/ncurses-5.9-r3:0= )
tree-sitter? ( dev-libs/tree-sitter:= )
xml? ( dev-libs/libxml2:= )
~llvm-core/clang-${PV}
~llvm-core/llvm-${PV}[debuginfod=]
"
RDEPEND="
${DEPEND}
python? (
${PYTHON_DEPS}
)
"
BDEPEND="
${PYTHON_DEPS}
python? (
>=dev-lang/swig-3.0.11
)
test? (
$(python_gen_cond_dep "
~dev-python/lit-${PV}[\${PYTHON_USEDEP}]
dev-python/psutil[\${PYTHON_USEDEP}]
")
llvm-core/lld
)
"
LLVM_COMPONENTS=( lldb cmake llvm/utils )
LLVM_TEST_COMPONENTS=( llvm/lib/Testing/Support third-party )
LLVM_USE_TARGETS=llvm+eq
llvm.org_set_globals
src_configure() {
# bug #858389 (https://github.com/llvm/llvm-project/issues/83636)
filter-lto
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
local mycmakeargs=(
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
-DClang_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
-DLLDB_ENABLE_CURSES=$(usex ncurses)
-DLLDB_ENABLE_LIBEDIT=$(usex libedit)
-DLLDB_ENABLE_PYTHON=$(usex python)
-DLLDB_ENABLE_LUA=OFF
-DLLDB_ENABLE_LZMA=$(usex lzma)
-DLLDB_ENABLE_LIBXML2=$(usex xml)
-DLLVM_ENABLE_TERMINFO=$(usex ncurses)
-DLLVM_ENABLE_TREESITTER=$(usex tree-sitter)
-DLLDB_INCLUDE_TESTS=$(usex test)
-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-DCLANG_LINK_CLANG_DYLIB=ON
# TODO: fix upstream to detect this properly
-DHAVE_LIBDL=ON
-DHAVE_LIBPTHREAD=ON
# normally we'd have to set LLVM_ENABLE_TERMINFO, HAVE_TERMINFO
# and TERMINFO_LIBS... so just force FindCurses.cmake to use
# ncurses with complete library set (including autodetection
# of -ltinfo)
-DCURSES_NEED_NCURSES=ON
-DCLANG_RESOURCE_DIR="../../../clang/${LLVM_MAJOR}"
-DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
-DPython3_EXECUTABLE="${PYTHON}"
)
use test && mycmakeargs+=(
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
)
cmake_src_configure
}
src_test() {
local -x LIT_PRESERVES_TMP=1
cmake_build check-lldb-{shell,unit}
# failures + hangs
#use python && cmake_build check-lldb-api
}
src_install() {
cmake_src_install
find "${D}" -name '*.a' -delete || die
use python && python_optimize
}

View File

@@ -13,4 +13,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,53 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit elisp-common llvm.org
DESCRIPTION="Common files shared between multiple slots of LLVM"
HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
SLOT="0"
IUSE="emacs"
RDEPEND="
!llvm-core/llvm:0
"
BDEPEND="
emacs? ( >=app-editors/emacs-23.1:* )
"
LLVM_COMPONENTS=( llvm/utils )
llvm.org_set_globals
SITEFILE="50llvm-gentoo.el"
BYTECOMPFLAGS="-L emacs"
src_compile() {
default
use emacs && elisp-compile emacs/*.el
}
src_install() {
insinto /usr/share/vim/vimfiles
doins -r vim/*/
# some users may find it useful
newdoc vim/README README.vim
dodoc vim/vimrc
if use emacs ; then
elisp-install llvm emacs/*.{el,elc}
elisp-make-site-file "${SITEFILE}" llvm
fi
}
pkg_postinst() {
use emacs && elisp-site-regen
}
pkg_postrm() {
use emacs && elisp-site-regen
}

View File

@@ -21,4 +21,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,572 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake flag-o-matic llvm.org multilib-minimal pax-utils python-any-r1
inherit toolchain-funcs
DESCRIPTION="Low Level Virtual Machine"
HOMEPAGE="https://llvm.org/"
# Additional licenses:
# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD.
# 2. xxhash: BSD.
# 3. MD5 code: public-domain.
# 4. ConvertUTF.h: TODO.
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA BSD public-domain rc"
SLOT="${LLVM_MAJOR}/${LLVM_SOABI}"
IUSE="
+binutils-plugin +debug debuginfod doc exegesis libedit +libffi
test xml z3 zstd
"
RESTRICT="!test? ( test )"
RDEPEND="
virtual/zlib:=[${MULTILIB_USEDEP}]
debuginfod? (
net-misc/curl:=
dev-cpp/cpp-httplib:=
)
exegesis? ( dev-libs/libpfm:= )
libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
libffi? ( >=dev-libs/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
z3? ( >=sci-mathematics/z3-4.7.1:0=[${MULTILIB_USEDEP}] )
zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] )
"
DEPEND="
${RDEPEND}
binutils-plugin? ( sys-libs/binutils-libs )
"
BDEPEND="
${PYTHON_DEPS}
dev-lang/perl
sys-devel/gnuconfig
kernel_Darwin? (
<llvm-runtimes/libcxx-${LLVM_VERSION}.9999
)
libffi? ( virtual/pkgconfig )
"
# There are no file collisions between these versions but having :0
# installed means llvm-config there will take precedence.
RDEPEND="
${RDEPEND}
!llvm-core/llvm:0
"
PDEPEND="
llvm-core/llvm-common
llvm-core/llvm-toolchain-symlinks:${LLVM_MAJOR}
binutils-plugin? ( >=llvm-core/llvmgold-${LLVM_MAJOR} )
"
LLVM_COMPONENTS=( llvm cmake libc mlir/utils/pygments third-party utils/docs )
LLVM_MANPAGES=1
LLVM_USE_TARGETS=provide
llvm.org_set_globals
[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" doc? ( "
BDEPEND+="
$(python_gen_any_dep '
dev-python/myst-parser[${PYTHON_USEDEP}]
dev-python/sphinx[${PYTHON_USEDEP}]
')
"
[[ -n ${LLVM_MANPAGE_DIST} ]] && BDEPEND+=" ) "
python_check_deps() {
llvm_are_manpages_built || return 0
python_has_version -b "dev-python/myst-parser[${PYTHON_USEDEP}]" &&
python_has_version -b "dev-python/sphinx[${PYTHON_USEDEP}]"
}
check_uptodate() {
local prod_targets=(
$(sed -n -e '/set(LLVM_ALL_TARGETS/,/)/p' CMakeLists.txt \
| tail -n +2 | head -n -1)
)
local all_targets=(
lib/Target/*/
)
all_targets=( "${all_targets[@]#lib/Target/}" )
all_targets=( "${all_targets[@]%/}" )
local exp_targets=() i
for i in "${all_targets[@]}"; do
has "${i}" "${prod_targets[@]}" || exp_targets+=( "${i}" )
done
local outdated
if [[ ${exp_targets[*]} != ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]} ]]; then
eerror "ALL_LLVM_EXPERIMENTAL_TARGETS are outdated!"
eerror " Have: ${ALL_LLVM_EXPERIMENTAL_TARGETS[*]}"
eerror "Expected: ${exp_targets[*]}"
eerror
outdated=1
fi
if [[ ${prod_targets[*]} != ${ALL_LLVM_PRODUCTION_TARGETS[*]} ]]; then
eerror "ALL_LLVM_PRODUCTION_TARGETS are outdated!"
eerror " Have: ${ALL_LLVM_PRODUCTION_TARGETS[*]}"
eerror "Expected: ${prod_targets[*]}"
outdated=1
fi
[[ ${outdated} ]] && die "Update ALL_LLVM*_TARGETS"
}
check_distribution_components() {
if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
local all_targets=() my_targets=() l
cd "${BUILD_DIR}" || die
while read -r l; do
if [[ ${l} == install-*-stripped:* ]]; then
l=${l#install-}
l=${l%%-stripped*}
case ${l} in
# shared libs
LLVM|LLVMgold)
;;
# TableGen lib + deps
LLVMDemangle|LLVMSupport|LLVMSupportLSP|LLVMTableGen)
;;
# for mlir-tblgen
LLVMCodeGenTypes)
;;
# used by lldb
LLVMDebuginfod|LLVMHTTP)
;;
# testing libraries
LLVMTestingAnnotations|LLVMTestingSupport)
;;
# static libs
LLVM*)
continue
;;
# meta-targets
distribution|llvm-libraries)
continue
;;
# used only w/ USE=doc
docs-llvm-html)
use doc || continue
;;
# used only w/ USE=debuginfd
llvm-debuginfod)
use debuginfod || continue
;;
# used only w/ USE=xml
llvm-mt)
use xml || continue
;;
esac
all_targets+=( "${l}" )
fi
done < <(${NINJA} -t targets all)
while read -r l; do
my_targets+=( "${l}" )
done < <(get_distribution_components $"\n")
local add=() remove=()
for l in "${all_targets[@]}"; do
if ! has "${l}" "${my_targets[@]}"; then
add+=( "${l}" )
fi
done
for l in "${my_targets[@]}"; do
if ! has "${l}" "${all_targets[@]}"; then
remove+=( "${l}" )
fi
done
if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
eerror "get_distribution_components() is outdated!"
eerror " Add: ${add[*]}"
eerror "Remove: ${remove[*]}"
die "Update get_distribution_components()!"
fi
cd - >/dev/null || die
fi
}
src_prepare() {
# disable use of SDK on OSX, bug #568758
sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
# Update config.guess to support more systems
cp "${BROOT}/usr/share/gnuconfig/config.guess" cmake/ || die
# Disable lit tests (we run them in dev-python/lit).
> utils/lit/CMakeLists.txt || die
# Verify that the ebuild is up-to-date
check_uptodate
llvm.org_src_prepare
}
get_distribution_components() {
local sep=${1-;}
local out=(
# shared libs
LLVM
LTO
Remarks
# tools
llvm-config
# common stuff
cmake-exports
llvm-headers
# libraries needed for clang-tblgen
LLVMDemangle
LLVMSupport
LLVMTableGen
# mlir-tblgen
LLVMCodeGenTypes
LLVMSupportLSP
# testing libraries
llvm_gtest
llvm_gtest_main
LLVMTestingAnnotations
LLVMTestingSupport
)
if multilib_is_native_abi; then
out+=(
# library used by lldb
LLVMDebuginfod
LLVMHTTP
# utilities
llvm-tblgen
llvm-test-mustache-spec
FileCheck
llvm-PerfectShuffle
count
not
yaml-bench
UnicodeNameMappingGenerator
# tools
clang-offload-packager
dsymutil
llc
lli
lli-child-target
llubi
llvm-addr2line
llvm-ar
llvm-as
llvm-bcanalyzer
llvm-bitcode-strip
llvm-c-test
llvm-cas
llvm-cat
llvm-cfi-verify
llvm-cgdata
llvm-config
llvm-cov
llvm-ctxprof-util
llvm-cvtres
llvm-cxxdump
llvm-cxxfilt
llvm-cxxmap
llvm-debuginfo-analyzer
llvm-debuginfod-find
llvm-diff
llvm-dis
llvm-dlltool
llvm-dwarfdump
llvm-dwarfutil
llvm-dwp
llvm-exegesis
llvm-extract
llvm-extract-bundle-entry
llvm-gpu-loader
llvm-gsymutil
llvm-ifs
llvm-install-name-tool
llvm-ir2vec
llvm-jitlink
llvm-jitlink-executor
llvm-lib
llvm-libtool-darwin
llvm-link
llvm-lipo
llvm-lto
llvm-lto2
llvm-mc
llvm-mca
llvm-ml
llvm-ml64
llvm-modextract
llvm-nm
llvm-objcopy
llvm-objdump
llvm-offload-binary
llvm-offload-wrapper
llvm-opt-report
llvm-otool
llvm-pdbutil
llvm-profdata
llvm-profgen
llvm-ranlib
llvm-rc
llvm-readelf
llvm-readobj
llvm-readtapi
llvm-reduce
llvm-remarkutil
llvm-rtdyld
llvm-sim
llvm-size
llvm-split
llvm-stress
llvm-strings
llvm-strip
llvm-symbolizer
llvm-tli-checker
llvm-undname
llvm-windres
llvm-xray
obj2yaml
opt
reduce-chunk-list
sancov
sanstats
split-file
verify-uselistorder
yaml2obj
# python modules
opt-viewer
)
if llvm_are_manpages_built; then
out+=(
# manpages
docs-dsymutil-man
docs-llvm-dwarfdump-man
docs-llvm-man
)
fi
use doc && out+=(
docs-llvm-html
)
use binutils-plugin && out+=(
LLVMgold
)
use debuginfod && out+=(
llvm-debuginfod
)
use xml && out+=(
llvm-mt
)
fi
printf "%s${sep}" "${out[@]}"
}
multilib_src_configure() {
# ODR violations (bug #917536, bug #926529). Just do it for GCC for now
# to avoid people grumbling. GCC is, anecdotally, more likely to miscompile
# LLVM with LTO anyway (which is not necessarily its fault).
tc-is-gcc && filter-lto
local ffi_cflags ffi_ldflags
if use libffi; then
ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
fi
local libdir=$(get_libdir)
local mycmakeargs=(
# disable appending VCS revision to the version to improve
# direct cache hit ratio
-DLLVM_APPEND_VC_REV=OFF
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-DLLVM_LIBDIR_SUFFIX=${libdir#lib}
-DBUILD_SHARED_LIBS=OFF
-DLLVM_BUILD_LLVM_DYLIB=ON
-DLLVM_LINK_LLVM_DYLIB=ON
-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
# cheap hack: LLVM combines both anyway, and the only difference
# is that the former list is explicitly verified at cmake time
-DLLVM_TARGETS_TO_BUILD=""
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-DLLVM_INCLUDE_BENCHMARKS=OFF
-DLLVM_INCLUDE_TESTS=ON
-DLLVM_BUILD_TESTS=$(usex test)
-DLLVM_INSTALL_GTEST=ON
-DLLVM_ENABLE_FFI=$(usex libffi)
-DLLVM_ENABLE_LIBEDIT=$(usex libedit)
-DLLVM_ENABLE_LIBXML2=$(usex xml)
-DLLVM_ENABLE_ASSERTIONS=$(usex debug)
-DLLVM_ENABLE_LIBPFM=$(usex exegesis)
-DLLVM_ENABLE_EH=ON
-DLLVM_ENABLE_RTTI=ON
-DLLVM_ENABLE_Z3_SOLVER=$(usex z3)
-DLLVM_ENABLE_ZLIB=FORCE_ON
-DLLVM_ENABLE_ZSTD=$(usex zstd FORCE_ON OFF)
-DLLVM_ENABLE_CURL=$(usex debuginfod)
-DLLVM_ENABLE_HTTPLIB=$(usex debuginfod)
-DLLVM_UNREACHABLE_OPTIMIZE=OFF
-DLLVM_HOST_TRIPLE="${CHOST}"
-DPython3_EXECUTABLE="${PYTHON}"
# disable OCaml bindings (now in dev-ml/llvm)
-DOCAMLFIND=NO
)
local suffix=
if [[ -n ${EGIT_VERSION} && ${EGIT_BRANCH} != release/* ]]; then
# the ABI of the main branch is not stable, so let's include
# the commit id in the SOVERSION to contain the breakage
suffix+="git${EGIT_VERSION::8}"
fi
if [[ $(tc-get-cxx-stdlib) == libc++ ]]; then
# Smart hack: alter version suffix -> SOVERSION when linking
# against libc++. This way we won't end up mixing LLVM libc++
# libraries with libstdc++ clang, and the other way around.
suffix+="+libcxx"
mycmakeargs+=(
-DLLVM_ENABLE_LIBCXX=ON
)
fi
mycmakeargs+=(
-DLLVM_VERSION_SUFFIX="${suffix}"
)
use test && mycmakeargs+=(
-DLLVM_LIT_ARGS="$(get_lit_flags)"
)
if multilib_is_native_abi; then
local build_docs=OFF
if llvm_are_manpages_built; then
build_docs=ON
mycmakeargs+=(
-DCMAKE_INSTALL_MANDIR="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
-DLLVM_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
-DSPHINX_WARNINGS_AS_ERRORS=OFF
)
fi
mycmakeargs+=(
-DLLVM_BUILD_DOCS=${build_docs}
-DLLVM_ENABLE_OCAMLDOC=OFF
-DLLVM_ENABLE_SPHINX=${build_docs}
-DLLVM_ENABLE_DOXYGEN=OFF
-DLLVM_INSTALL_UTILS=ON
)
use binutils-plugin && mycmakeargs+=(
-DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include
)
fi
use kernel_Darwin && mycmakeargs+=(
# Use our libtool instead of looking it up with xcrun
-DCMAKE_LIBTOOL="${EPREFIX}/usr/bin/${CHOST}-libtool"
)
# LLVM can have very high memory consumption while linking,
# exhausting the limit on 32-bit linker executable
use x86 && local -x LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
cmake_src_configure
grep -q -E "^CMAKE_PROJECT_VERSION_MAJOR(:.*)?=${LLVM_MAJOR}$" \
CMakeCache.txt ||
die "Incorrect version, did you update _LLVM_MAIN_MAJOR?"
multilib_is_native_abi && check_distribution_components
}
multilib_src_compile() {
tc-env_build cmake_build distribution
pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld
pax-mark m "${BUILD_DIR}"/bin/lli
pax-mark m "${BUILD_DIR}"/bin/lli-child-target
if use test; then
pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests
pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
fi
}
multilib_src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
cmake_build check
}
src_install() {
local MULTILIB_CHOST_TOOLS=(
/usr/lib/llvm/${LLVM_MAJOR}/bin/llvm-config
)
local MULTILIB_WRAPPED_HEADERS=(
/usr/include/llvm/Config/llvm-config.h
)
local LLVM_LDPATHS=()
multilib-minimal_src_install
# move wrapped headers back
mv "${ED}"/usr/include "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include || die
}
multilib_src_install() {
DESTDIR=${D} cmake_build install-distribution
# move headers to /usr/include for wrapping
rm -rf "${ED}"/usr/include || die
mv "${ED}"/usr/lib/llvm/${LLVM_MAJOR}/include "${ED}"/usr/include || die
LLVM_LDPATHS+=( "${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)" )
}
multilib_src_install_all() {
local revord=$(( 9999 - ${LLVM_MAJOR} ))
newenvd - "60llvm-${revord}" <<-_EOF_
PATH="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin"
# we need to duplicate it in ROOTPATH for Portage to respect...
ROOTPATH="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin"
MANPATH="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/share/man"
LDPATH="$( IFS=:; echo "${LLVM_LDPATHS[*]}" )"
_EOF_
docompress "/usr/lib/llvm/${LLVM_MAJOR}/share/man"
llvm_install_manpages
}
pkg_postinst() {
elog "You can find additional opt-viewer utility scripts in:"
elog " ${EROOT}/usr/lib/llvm/${LLVM_MAJOR}/share/opt-viewer"
elog "To use these scripts, you will need Python along with the following"
elog "packages:"
elog " dev-python/pygments (for opt-viewer)"
elog " dev-python/pyyaml (for all of them)"
}

View File

@@ -5,4 +5,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,232 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake llvm.org multilib-minimal python-any-r1
DESCRIPTION="Multi-Level Intermediate Representation (library only)"
HOMEPAGE="https://mlir.llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions"
SLOT="${LLVM_MAJOR}/${LLVM_SOABI}"
IUSE="+debug test"
RESTRICT="!test? ( test )"
DEPEND="
~llvm-core/llvm-${PV}[debug=,${MULTILIB_USEDEP}]
"
RDEPEND="
${DEPEND}
"
BDEPEND="
${PYTHON_DEPS}
llvm-core/llvm:${LLVM_MAJOR}
test? (
$(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
)
"
LLVM_COMPONENTS=( mlir cmake )
# tablegen tests use *.td files there
LLVM_TEST_COMPONENTS=( llvm/include )
llvm.org_set_globals
python_check_deps() {
if use test; then
python_has_version "dev-python/lit[${PYTHON_USEDEP}]"
fi
}
src_prepare() {
llvm.org_src_prepare
# https://github.com/llvm/llvm-project/issues/120902
sed -i -e '/LINK_LIBS/s:PUBLIC:PRIVATE:' \
lib/ExecutionEngine/CMakeLists.txt || die
# this test is completely unpredictable, no clue why
rm test/mlir-pdll-lsp-server/view-output.test || die
}
check_distribution_components() {
if [[ ${CMAKE_MAKEFILE_GENERATOR} == ninja ]]; then
local all_targets=() my_targets=() l
cd "${BUILD_DIR}" || die
while read -r l; do
if [[ ${l} == install-*-stripped:* ]]; then
l=${l#install-}
l=${l%%-stripped*}
case ${l} in
# meta-targets
mlir-libraries|distribution)
continue
;;
# dylib
MLIR)
;;
# installed test libraries
MLIRTestAnalysis|MLIRTestDialect|MLIRTestIR)
;;
MLIROpenACCTestPasses)
;;
# static libraries
MLIR*)
continue
;;
esac
all_targets+=( "${l}" )
fi
done < <(${NINJA} -t targets all)
while read -r l; do
my_targets+=( "${l}" )
done < <(get_distribution_components $"\n")
local add=() remove=()
for l in "${all_targets[@]}"; do
if ! has "${l}" "${my_targets[@]}"; then
add+=( "${l}" )
fi
done
for l in "${my_targets[@]}"; do
if ! has "${l}" "${all_targets[@]}"; then
remove+=( "${l}" )
fi
done
if [[ ${#add[@]} -gt 0 || ${#remove[@]} -gt 0 ]]; then
eqawarn "get_distribution_components() is outdated!"
eqawarn " Add: ${add[*]}"
eqawarn "Remove: ${remove[*]}"
fi
cd - >/dev/null || die
fi
}
get_distribution_components() {
local sep=${1-;}
local out=(
mlir-cmake-exports
mlir-headers
# the dylib
MLIR
# shared libraries
mlir_apfloat_wrappers
mlir_arm_runner_utils
mlir_arm_sme_abi_stubs
mlir_async_runtime
mlir_c_runner_utils
mlir_float16_utils
mlir_runner_utils
# test libraries required by flang
MLIROpenACCTestPasses
MLIRTestAnalysis
MLIRTestDialect
MLIRTestIR
)
if multilib_is_native_abi; then
out+=(
# tools
mlir-linalg-ods-yaml-gen
mlir-lsp-server
mlir-opt
mlir-pdll
mlir-pdll-lsp-server
mlir-query
mlir-reduce
mlir-rewrite
mlir-runner
mlir-tblgen
mlir-translate
tblgen-lsp-server
tblgen-to-irdl
)
fi
printf "%s${sep}" "${out[@]}"
}
multilib_src_configure() {
local mycmakeargs=(
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
-DBUILD_SHARED_LIBS=OFF
# this controls building libMLIR.so
-DLLVM_BUILD_LLVM_DYLIB=ON
-DMLIR_BUILD_MLIR_C_DYLIB=OFF
-DMLIR_LINK_MLIR_DYLIB=ON
-DMLIR_INCLUDE_TESTS=ON
-DMLIR_INCLUDE_INTEGRATION_TESTS=OFF
-DLLVM_DISTRIBUTION_COMPONENTS=$(get_distribution_components)
# this enables installing mlir-tblgen and mlir-pdll
-DLLVM_BUILD_UTILS=ON
-DPython3_EXECUTABLE="${PYTHON}"
-DLLVM_BUILD_TOOLS=ON
# TODO
-DMLIR_ENABLE_CUDA_RUNNER=0
-DMLIR_ENABLE_ROCM_RUNNER=0
-DMLIR_ENABLE_SYCL_RUNNER=0
-DMLIR_ENABLE_SPIRV_CPU_RUNNER=0
-DMLIR_ENABLE_VULKAN_RUNNER=0
-DMLIR_ENABLE_BINDINGS_PYTHON=0
-DMLIR_INSTALL_AGGREGATE_OBJECTS=OFF
)
use test && mycmakeargs+=(
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
)
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
cmake_src_configure
multilib_is_native_abi && check_distribution_components
}
multilib_src_compile() {
cmake_build distribution
}
multilib_src_test() {
local known_xfail=()
case ${ABI} in
arm|ppc|x86)
known_xfail+=(
# MLIR is full of 64-bit assumptions, sigh
# https://github.com/llvm/llvm-project/issues/124541
Dialect/Bufferization/Transforms/one-shot-bufferize-pass-statistics.mlir
Dialect/LLVMIR/sroa-statistics.mlir
Dialect/Linalg/vectorize-tensor-extract.mlir
Dialect/MemRef/mem2reg-statistics.mlir
Dialect/Tensor/fold-tensor-subset-ops.mlir
Dialect/Tensor/tracking-listener.mlir
Pass/pipeline-stats-nested.mlir
Pass/pipeline-stats.mlir
)
;;
esac
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
local -x LIT_XFAIL="${known_xfail[*]}"
LIT_XFAIL=${LIT_XFAIL// /;}
cmake_build check-mlir
}
multilib_src_install() {
DESTDIR=${D} cmake_build install-distribution
}

View File

@@ -7,4 +7,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,59 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake llvm.org python-any-r1
DESCRIPTION="Polyhedral optimizations for LLVM"
HOMEPAGE="https://polly.llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
# vendored isl (fork?)
LICENSE+=" MIT"
SLOT="${LLVM_MAJOR}/${LLVM_SOABI}"
IUSE="+debug test"
RESTRICT="!test? ( test )"
DEPEND="
~llvm-core/llvm-${PV}:${LLVM_MAJOR}=[debug=]
"
RDEPEND="
${DEPEND}
"
BDEPEND="
test? (
$(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
)
"
LLVM_COMPONENTS=( polly cmake )
llvm.org_set_globals
python_check_deps() {
python_has_version "dev-python/lit[${PYTHON_USEDEP}]"
}
pkg_setup() {
use test && python-any-r1_pkg_setup
}
src_configure() {
local mycmakeargs=(
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}"
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
)
use test && mycmakeargs+=(
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
-DPython3_EXECUTABLE="${PYTHON}"
)
cmake_src_configure
}
src_test() {
local -x LIT_PRESERVES_TMP=1
cmake_build check-polly
}

View File

@@ -19,4 +19,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,237 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit check-reqs cmake flag-o-matic llvm.org llvm-utils python-any-r1
DESCRIPTION="Compiler runtime libraries for clang (sanitizers & xray)"
HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
SLOT="${LLVM_MAJOR}"
IUSE="+abi_x86_32 abi_x86_64 +clang +debug test"
# base targets
IUSE+=" +ctx-profile +libfuzzer +memprof +orc +profile +xray"
# sanitizer targets, keep in sync with config-ix.cmake
# NB: ubsan, scudo deliberately match two entries
SANITIZER_FLAGS=(
asan dfsan lsan msan hwasan tsan ubsan safestack cfi scudo
shadowcallstack gwp-asan nsan rtsan
)
IUSE+=" ${SANITIZER_FLAGS[@]/#/+}"
REQUIRED_USE="
|| ( ${SANITIZER_FLAGS[*]} libfuzzer orc profile xray )
test? (
cfi? ( ubsan )
gwp-asan? ( scudo )
)
"
RESTRICT="
!clang? ( test )
!test? ( test )
"
DEPEND="
llvm-core/llvm:${LLVM_MAJOR}
virtual/libcrypt[abi_x86_32(-)?,abi_x86_64(-)?]
"
BDEPEND="
clang? (
llvm-core/clang:${LLVM_MAJOR}
llvm-core/clang-linker-config:${LLVM_MAJOR}
llvm-runtimes/clang-rtlib-config:${LLVM_MAJOR}
llvm-runtimes/clang-stdlib-config:${LLVM_MAJOR}
llvm-runtimes/compiler-rt:${LLVM_MAJOR}
)
elibc_glibc? ( net-libs/libtirpc )
test? (
$(python_gen_any_dep ">=dev-python/lit-15[\${PYTHON_USEDEP}]")
=llvm-core/clang-${LLVM_VERSION}*:${LLVM_MAJOR}
)
!test? (
${PYTHON_DEPS}
)
"
LLVM_COMPONENTS=( compiler-rt cmake llvm/cmake )
LLVM_TEST_COMPONENTS=(
llvm/include/llvm/ProfileData llvm/lib/Testing/Support third-party
)
llvm.org_set_globals
python_check_deps() {
use test || return 0
python_has_version ">=dev-python/lit-15[${PYTHON_USEDEP}]"
}
check_space() {
if use test; then
local CHECKREQS_DISK_BUILD=11G
check-reqs_pkg_pretend
fi
}
pkg_pretend() {
check_space
}
pkg_setup() {
check_space
python-any-r1_pkg_setup
}
src_prepare() {
sed -i -e 's:-Werror::' lib/tsan/go/buildgo.sh || die
# builds freestanding code
filter-flags -fstack-protector*
local flag
for flag in "${SANITIZER_FLAGS[@]}"; do
if ! use "${flag}"; then
local cmake_flag=${flag/-/_}
sed -i -e "/COMPILER_RT_HAS_${cmake_flag^^}/s:TRUE:FALSE:" \
cmake/config-ix.cmake || die
fi
done
# TODO: fix these tests to be skipped upstream
if use asan && ! use profile; then
rm test/asan/TestCases/asan_and_llvm_coverage_test.cpp || die
fi
if use ubsan && ! use cfi; then
> test/cfi/CMakeLists.txt || die
fi
llvm.org_src_prepare
}
src_configure() {
llvm_prepend_path "${LLVM_MAJOR}"
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
# pre-set since we need to pass it to cmake
BUILD_DIR=${WORKDIR}/compiler-rt_build
if use clang; then
local -x CC=${CHOST}-clang-${LLVM_MAJOR}
local -x CXX=${CHOST}-clang++-${LLVM_MAJOR}
strip-unsupported-flags
# The full clang configuration might not be ready yet. Use the partial
# configuration files that are guaranteed to exist even during initial
# installations and upgrades.
local flags=(
--config="${ESYSROOT}"/etc/clang/"${LLVM_MAJOR}"/gentoo-{rtlib,stdlib,linker}.cfg
)
local -x CFLAGS="${CFLAGS} ${flags[@]}"
local -x CXXFLAGS="${CXXFLAGS} ${flags[@]}"
local -x LDFLAGS="${LDFLAGS} ${flags[@]}"
fi
local flag want_sanitizer=OFF
for flag in "${SANITIZER_FLAGS[@]}"; do
if use "${flag}"; then
want_sanitizer=ON
break
fi
done
local mycmakeargs=(
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${LLVM_MAJOR}"
# use a build dir structure consistent with install
# this makes it possible to easily deploy test-friendly clang
-DCOMPILER_RT_OUTPUT_DIR="${BUILD_DIR}/lib/clang/${LLVM_MAJOR}"
-DCOMPILER_RT_INCLUDE_TESTS=$(usex test)
# builtins & crt installed by llvm-runtimes/compiler-rt
-DCOMPILER_RT_BUILD_BUILTINS=OFF
-DCOMPILER_RT_BUILD_CRT=OFF
-DCOMPILER_RT_BUILD_CTX_PROFILE=$(usex ctx-profile)
-DCOMPILER_RT_BUILD_LIBFUZZER=$(usex libfuzzer)
-DCOMPILER_RT_BUILD_MEMPROF=$(usex memprof)
-DCOMPILER_RT_BUILD_ORC=$(usex orc)
-DCOMPILER_RT_BUILD_PROFILE=$(usex profile)
-DCOMPILER_RT_BUILD_SANITIZERS="${want_sanitizer}"
-DCOMPILER_RT_BUILD_XRAY=$(usex xray)
-DPython3_EXECUTABLE="${PYTHON}"
)
if use amd64; then
mycmakeargs+=(
-DCAN_TARGET_i386=$(usex abi_x86_32)
-DCAN_TARGET_x86_64=$(usex abi_x86_64)
)
fi
if use test; then
mycmakeargs+=(
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
# they are created during src_test()
-DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_MAJOR}/bin/clang"
-DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_MAJOR}/bin/clang++"
)
# same flags are passed for build & tests, so we need to strip
# them down to a subset supported by clang
CC=${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin/clang \
CXX=${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin/clang++ \
strip-unsupported-flags
fi
if use prefix && [[ "${CHOST}" == *-darwin* ]] ; then
mycmakeargs+=(
# setting -isysroot is disabled with compiler-rt-prefix-paths.patch
# this allows adding arm64 support using SDK in EPREFIX
-DDARWIN_macosx_CACHED_SYSROOT="${EPREFIX}/MacOSX.sdk"
# Set version based on the SDK in EPREFIX
# This disables i386 for SDK >= 10.15
# Will error if has_use tsan and SDK < 10.12
-DDARWIN_macosx_OVERRIDE_SDK_VERSION="$(realpath "${EPREFIX}/MacOSX.sdk" | sed -e 's/.*MacOSX\(.*\)\.sdk/\1/')"
# Use our libtool instead of looking it up with xcrun
-DCMAKE_LIBTOOL="${EPREFIX}/usr/bin/${CHOST}-libtool"
)
fi
cmake_src_configure
if use test; then
local sys_dest=( "${BUILD_DIR}"/lib/clang/${LLVM_MAJOR}/lib/* )
[[ ! -e ${sys_dest} ]] && die "Unable to find ${sys_dest}"
[[ ${#sys_dest[@]} -ne 1 ]] && die "Non-deterministic compiler-rt install: ${sys_dest[*]}"
local sys_dir=( "${EPREFIX}/usr/lib/clang/${LLVM_MAJOR}/lib/${sys_dest##*/}" )
[[ ! -e ${sys_dir} ]] && die "${sys_dir} is missing"
# copy clang over since resource_dir is located relatively to binary
# therefore, we can put our new libraries in it
mkdir -p "${BUILD_DIR}"/lib/{llvm/${LLVM_MAJOR}/{bin,$(get_libdir)},clang/${LLVM_MAJOR}/include} || die
cp "${EPREFIX}"/usr/lib/llvm/${LLVM_MAJOR}/bin/clang{,++} \
"${BUILD_DIR}"/lib/llvm/${LLVM_MAJOR}/bin/ || die
cp "${EPREFIX}"/usr/lib/clang/${LLVM_MAJOR}/include/*.h \
"${BUILD_DIR}"/lib/clang/${LLVM_MAJOR}/include/ || die
cp "${sys_dir}"/*builtins*.a "${sys_dest}/" || die
# we also need LLVMgold.so for gold-based tests
if [[ -f ${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/LLVMgold.so ]]; then
ln -s "${EPREFIX}"/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/LLVMgold.so \
"${BUILD_DIR}"/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/ || die
fi
fi
}
src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
# disable sandbox to have it stop clobbering LD_PRELOAD
local -x SANDBOX_ON=0
# wipe LD_PRELOAD to make ASAN happy
local -x LD_PRELOAD=
cmake_build check-all
}

View File

@@ -14,4 +14,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,190 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake crossdev flag-o-matic llvm.org llvm-utils python-any-r1
inherit toolchain-funcs
DESCRIPTION="Compiler runtime library for clang (built-in part)"
HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
SLOT="${LLVM_MAJOR}"
IUSE="+abi_x86_32 abi_x86_64 +atomic-builtins +clang +debug test"
REQUIRED_USE="atomic-builtins? ( clang )"
RESTRICT="!test? ( test ) !clang? ( test )"
DEPEND="
llvm-core/llvm:${LLVM_MAJOR}
"
BDEPEND="
clang? (
llvm-core/clang:${LLVM_MAJOR}
llvm-core/clang-linker-config:${LLVM_MAJOR}
)
test? (
$(python_gen_any_dep ">=dev-python/lit-15[\${PYTHON_USEDEP}]")
=llvm-core/clang-${LLVM_VERSION}*:${LLVM_MAJOR}
)
!test? (
${PYTHON_DEPS}
)
"
LLVM_COMPONENTS=( compiler-rt cmake llvm/cmake third-party/siphash )
LLVM_TEST_COMPONENTS=( llvm/include/llvm/TargetParser )
llvm.org_set_globals
python_check_deps() {
use test || return 0
python_has_version ">=dev-python/lit-15[${PYTHON_USEDEP}]"
}
pkg_pretend() {
if ! use clang && ! tc-is-clang; then
ewarn "Building using a compiler other than clang may result in broken atomics"
ewarn "library. Enable USE=clang unless you have a very good reason not to."
fi
}
pkg_setup() {
if target_is_not_host || tc-is-cross-compiler ; then
# strips vars like CFLAGS="-march=x86_64-v3" for non-x86 architectures
CHOST=${CTARGET} strip-unsupported-flags
# overrides host docs otherwise
DOCS=()
fi
python-any-r1_pkg_setup
}
test_compiler() {
target_is_not_host && return
$(tc-getCC) ${CFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c - \
<<<'int main() { return 0; }' &>/dev/null
}
src_configure() {
if use clang || use test; then
llvm_prepend_path -b "${LLVM_MAJOR}"
fi
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
# pre-set since we need to pass it to cmake
BUILD_DIR=${WORKDIR}/${P}_build
if use clang && ! is_crosspkg; then
# Only do this conditionally to allow overriding with
# e.g. CC=clang-13 in case of breakage
if ! tc-is-clang ; then
local -x CC=${CHOST}-clang-${LLVM_MAJOR}
local -x CXX=${CHOST}-clang++-${LLVM_MAJOR}
fi
strip-unsupported-flags
# The full clang configuration might not be ready yet. Given that compiler-rt
# require runtime, use only the linker configuration.
local flags=(
--config="${ESYSROOT}"/etc/clang/"${LLVM_MAJOR}"/gentoo-linker.cfg
)
local -x CFLAGS="${CFLAGS} ${flags[@]}"
local -x CXXFLAGS="${CXXFLAGS} ${flags[@]}"
local -x LDFLAGS="${LDFLAGS} ${flags[@]}"
fi
if ! is_crosspkg && ! test_compiler ; then
local nolib_flags=( -nodefaultlibs -lc )
if test_compiler "${nolib_flags[@]}"; then
local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
ewarn "${CC} seems to lack runtime, trying with ${nolib_flags[*]}"
elif test_compiler "${nolib_flags[@]}" -nostartfiles; then
# Avoiding -nostartfiles earlier on for bug #862540,
# and set available entry symbol for bug #862798.
nolib_flags+=( -nostartfiles -e main )
local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
ewarn "${CC} seems to lack runtime, trying with ${nolib_flags[*]}"
fi
fi
local mycmakeargs=(
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${LLVM_MAJOR}"
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
-DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=$(usex !atomic-builtins)
-DCOMPILER_RT_INCLUDE_TESTS=$(usex test)
-DCOMPILER_RT_BUILD_CTX_PROFILE=OFF
-DCOMPILER_RT_BUILD_LIBFUZZER=OFF
-DCOMPILER_RT_BUILD_MEMPROF=OFF
-DCOMPILER_RT_BUILD_ORC=OFF
-DCOMPILER_RT_BUILD_PROFILE=OFF
-DCOMPILER_RT_BUILD_SANITIZERS=OFF
-DCOMPILER_RT_BUILD_XRAY=OFF
-DPython3_EXECUTABLE="${PYTHON}"
)
if use amd64 && ! target_is_not_host; then
mycmakeargs+=(
-DCAN_TARGET_i386=$(usex abi_x86_32)
-DCAN_TARGET_x86_64=$(usex abi_x86_64)
)
fi
if is_crosspkg; then
# Needed to target built libc headers
export CFLAGS="${CFLAGS} -isystem /usr/${CTARGET}/usr/include"
mycmakeargs+=(
# Without this, the compiler will compile a test program
# and fail due to no builtins.
-DCMAKE_C_COMPILER_WORKS=1
-DCMAKE_CXX_COMPILER_WORKS=1
# Without this, compiler-rt install location is not unique
# to target triples, only to architecture.
# Needed if you want to target multiple libcs for one arch.
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
-DCMAKE_ASM_COMPILER_TARGET="${CTARGET}"
-DCMAKE_C_COMPILER_TARGET="${CTARGET}"
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON
)
fi
if use prefix && [[ "${CHOST}" == *-darwin* ]] ; then
mycmakeargs+=(
# setting -isysroot is disabled with compiler-rt-prefix-paths.patch
# this allows adding arm64 support using SDK in EPREFIX
-DDARWIN_macosx_CACHED_SYSROOT="${EPREFIX}/MacOSX.sdk"
# Set version based on the SDK in EPREFIX.
# This disables i386 for SDK >= 10.15
-DDARWIN_macosx_OVERRIDE_SDK_VERSION="$(realpath "${EPREFIX}/MacOSX.sdk" | sed -e 's/.*MacOSX\(.*\)\.sdk/\1/')"
# Use our libtool instead of looking it up with xcrun
-DCMAKE_LIBTOOL="${EPREFIX}/usr/bin/${CHOST}-libtool"
)
fi
if use test; then
mycmakeargs+=(
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
-DCOMPILER_RT_TEST_COMPILER="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin/clang"
-DCOMPILER_RT_TEST_CXX_COMPILER="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin/clang++"
)
fi
cmake_src_configure
}
src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
cmake_build check-builtins
}

View File

@@ -5,4 +5,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,74 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake flag-o-matic llvm.org python-any-r1
DESCRIPTION="LLVM's Fortran runtime"
HOMEPAGE="https://flang.llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions"
SLOT="${LLVM_MAJOR}"
IUSE="+debug test"
RESTRICT="!test? ( test )"
RDEPEND="
!<llvm-core/flang-21.0.0_pre20250221-r1
"
BDEPEND="
llvm-core/llvm:${LLVM_MAJOR}
llvm-core/flang
test? (
$(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
)
"
LLVM_COMPONENTS=(
runtimes flang-rt cmake flang libc/shared llvm/{cmake,utils}
)
LLVM_TEST_COMPONENTS=( third-party/unittest )
llvm.org_set_globals
python_check_deps() {
python_has_version "dev-python/lit[${PYTHON_USEDEP}]"
}
pkg_setup() {
use test && python-any-r1_pkg_setup
}
src_configure() {
# the code is not portable
local -x FC=flang F77=flang
strip-unsupported-flags
local mycmakeargs=(
# we may not have a runtime yet
-DCMAKE_Fortran_COMPILER_WORKS=TRUE
-DLLVM_ENABLE_RUNTIMES="flang-rt"
# this package forces NO_DEFAULT_PATHS
-DLLVM_BINARY_DIR="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
# set correct install paths
-DRUNTIMES_INSTALL_RESOURCE_PATH="${EPREFIX}/usr/lib/clang/${LLVM_MAJOR}"
-DLLVM_DEFAULT_TARGET_TRIPLE="${CHOST}"
-DFLANG_RT_INCLUDE_TESTS=$(usex test)
)
use test && mycmakeargs+=(
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
)
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
cmake_src_configure
}
src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
cmake_build check-flang-rt
}

View File

@@ -13,4 +13,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,80 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake llvm.org multibuild python-any-r1
DESCRIPTION="OpenCL C library"
HOMEPAGE="https://libclc.llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions || ( MIT BSD )"
SLOT="0"
IUSE="+spirv test video_cards_nvidia video_cards_radeonsi"
RESTRICT="!test? ( test )"
BDEPEND="
${PYTHON_DEPS}
llvm-core/clang:${LLVM_MAJOR}
spirv? (
>=dev-util/spirv-llvm-translator-23:*
)
test? (
$(python_gen_any_dep '
dev-python/lit[${PYTHON_USEDEP}]
')
)
"
LLVM_COMPONENTS=( libclc )
llvm.org_set_globals
src_configure() {
MULTIBUILD_VARIANTS=()
use spirv && MULTIBUILD_VARIANTS+=(
"spirv32-unknown-unknown"
"spirv64-unknown-unknown"
"spirv64-unknown-vulkan" # formerly clspv
)
use video_cards_nvidia && MULTIBUILD_VARIANTS+=(
"nvptx64-nvidia-cuda"
)
use video_cards_radeonsi && MULTIBUILD_VARIANTS+=(
"amdgcn-amd-amdhsa-llvm"
)
multibuild_foreach_variant my_configure
}
my_configure() {
local mycmakeargs=(
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
-DCMAKE_CLC_COMPILER="$(type -P clang-${LLVM_MAJOR})"
-DLLVM_DEFAULT_TARGET_TRIPLE="${MULTIBUILD_VARIANT}"
-DLLVM_INCLUDE_TESTS="$(usex test)"
)
use test && mycmakeargs+=(
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
)
cmake_src_configure
}
src_compile() {
multibuild_foreach_variant cmake_src_compile
}
src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
multibuild_foreach_variant cmake_build check-libclc
}
src_install() {
multibuild_foreach_variant cmake_src_install
}

View File

@@ -13,4 +13,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,258 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake-multilib crossdev flag-o-matic llvm.org llvm-utils
inherit python-any-r1 toolchain-funcs
DESCRIPTION="New implementation of the C++ standard library, targeting C++11"
HOMEPAGE="https://libcxx.llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
SLOT="0"
IUSE="+clang +libcxxabi +static-libs test"
REQUIRED_USE="test? ( clang )"
RESTRICT="!test? ( test )"
RDEPEND="
libcxxabi? (
~llvm-runtimes/libcxxabi-${PV}[static-libs?,${MULTILIB_USEDEP}]
)
!libcxxabi? ( >=sys-devel/gcc-4.7:=[cxx] )
"
DEPEND="
${RDEPEND}
llvm-core/llvm:${LLVM_MAJOR}
"
BDEPEND="
clang? (
llvm-core/clang:${LLVM_MAJOR}
llvm-core/clang-linker-config:${LLVM_MAJOR}
llvm-runtimes/clang-rtlib-config:${LLVM_MAJOR}
llvm-runtimes/clang-unwindlib-config:${LLVM_MAJOR}
)
!test? (
${PYTHON_DEPS}
)
test? (
dev-debug/gdb[python]
$(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
)
"
LLVM_COMPONENTS=(
runtimes libcxx{,abi} libc llvm/{cmake,utils} cmake
)
llvm.org_set_globals
python_check_deps() {
use test || return 0
python_has_version "dev-python/lit[${PYTHON_USEDEP}]"
}
pkg_setup() {
python-any-r1_pkg_setup
if ! use libcxxabi && ! tc-is-gcc ; then
eerror "To build ${PN} against libsupc++, you have to use gcc. Other"
eerror "compilers are not supported. Please set CC=gcc and CXX=g++"
eerror "and try again."
die
fi
}
test_compiler() {
$(tc-getCXX) ${CXXFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c++ - \
<<<'int main() { return 0; }' &>/dev/null
}
src_configure() {
local install_prefix=${EPREFIX}
is_crosspkg && install_prefix+=/usr/${CTARGET}
# note: we need to do this before multilib kicks in since it will
# alter the CHOST
local cxxabi cxxabi_incs
if use libcxxabi; then
cxxabi=system-libcxxabi
cxxabi_incs="${install_prefix}/usr/include/c++/v1"
else
local gcc_inc="${EPREFIX}/usr/lib/gcc/${CHOST}/$(gcc-fullversion)/include/g++-v$(gcc-major-version)"
cxxabi=libsupc++
cxxabi_incs="${gcc_inc};${gcc_inc}/${CHOST}"
fi
multilib-minimal_src_configure
}
multilib_src_configure() {
# Workaround for bgo #961153.
# TODO: Fix the multilib.eclass, so it sets CTARGET properly.
if ! is_crosspkg; then
export CTARGET=${CHOST}
fi
if use clang; then
llvm_prepend_path -b "${LLVM_MAJOR}"
local -x CC=${CTARGET}-clang-${LLVM_MAJOR}
local -x CXX=${CTARGET}-clang++-${LLVM_MAJOR}
strip-unsupported-flags
# The full clang configuration might not be ready yet. Use the partial
# configuration of components that libunwind depends on.
local flags=(
--config="${ESYSROOT}"/etc/clang/"${LLVM_MAJOR}"/gentoo-{rtlib,unwindlib,linker}.cfg
)
local -x CFLAGS="${CFLAGS} ${flags[@]}"
local -x CXXFLAGS="${CXXFLAGS} ${flags[@]}"
local -x LDFLAGS="${LDFLAGS} ${flags[@]}"
fi
# link to compiler-rt
local use_compiler_rt=OFF
[[ $(tc-get-c-rtlib) == compiler-rt ]] && use_compiler_rt=ON
local nostdlib_flags=( -nostdlib++ )
if ! test_compiler && test_compiler "${nostdlib_flags[@]}"; then
local -x LDFLAGS="${LDFLAGS} ${nostdlib_flags[*]}"
ewarn "${CXX} seems to lack runtime, trying with ${nostdlib_flags[*]}"
fi
local libdir=$(get_libdir)
local mycmakeargs=(
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
-DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
-DPython3_EXECUTABLE="${PYTHON}"
-DLLVM_ENABLE_RUNTIMES=libcxx
-DLLVM_INCLUDE_TESTS=OFF
-DLLVM_LIBDIR_SUFFIX=${libdir#lib}
-DLIBCXX_ENABLE_SHARED=ON
-DLIBCXX_ENABLE_STATIC=$(usex static-libs)
-DLIBCXX_CXX_ABI=${cxxabi}
-DLIBCXX_CXX_ABI_INCLUDE_PATHS=${cxxabi_incs}
# we're using our own mechanism for generating linker scripts
-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF
-DLIBCXX_HAS_MUSL_LIBC=$(llvm_cmake_use_musl)
-DLIBCXX_INCLUDE_BENCHMARKS=OFF
-DLIBCXX_INCLUDE_TESTS=$(usex test)
-DLIBCXX_INSTALL_MODULES=ON
-DLIBCXX_USE_COMPILER_RT=${use_compiler_rt}
# this is broken with standalone builds, and also meaningless
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF
)
if is_crosspkg; then
# Needed to target built libc headers
local -x CFLAGS="${CFLAGS} -isystem ${ESYSROOT}/usr/${CTARGET}/usr/include"
mycmakeargs+=(
# Without this, the compiler will compile a test program
# and fail due to no builtins.
-DCMAKE_C_COMPILER_WORKS=1
-DCMAKE_CXX_COMPILER_WORKS=1
# Install inside the cross sysroot.
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/${CTARGET}/usr"
)
fi
if use test; then
mycmakeargs+=(
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
-DPython3_EXECUTABLE="${PYTHON}"
)
fi
cmake_src_configure
}
multilib_src_compile() {
cmake_src_compile
if [[ ${CHOST} != *-darwin* ]] ; then
local libdir=$(get_libdir)
gen_shared_ldscript
use static-libs && gen_static_ldscript
fi
}
multilib_src_test() {
local -x LIT_PRESERVES_TMP=1
cmake_build libcxx-test-suite-install-cxx
if [[ ${CHOST} != *-darwin* ]] ; then
local libdir=$(get_libdir)
cp "${BUILD_DIR}"/{,libcxx/test-suite-install/}"${libdir}"/libc++_shared.so || die
if use static-libs; then
cp "${BUILD_DIR}"/{,libcxx/test-suite-install/}"${libdir}"/libc++_static.a || die
fi
fi
cmake_build check-cxx
}
multilib_src_install() {
cmake_src_install
# since we've replaced libc++.{a,so} with ldscripts, now we have to
# install the extra symlinks
if [[ ${CHOST} != *-darwin* ]] ; then
local libdir=$(get_libdir)
is_crosspkg && into /usr/${CTARGET}/usr
dolib.so "${libdir}"/libc++_shared.so
use static-libs && dolib.a "${libdir}"/libc++_static.a
fi
local install_prefix=
is_crosspkg && install_prefix=/usr/${CTARGET}
insinto "${install_prefix}/usr/share/libc++/gdb"
doins ../libcxx/utils/gdb/libcxx/printers.py
local lib_version=$(sed -n -e 's/^LIBCXX_LIBRARY_VERSION:STRING=//p' CMakeCache.txt || die)
[[ -n ${lib_version} ]] || die "Could not determine LIBCXX_LIBRARY_VERSION from CMakeCache.txt"
insinto "${install_prefix}/usr/share/gdb/auto-load/usr/$(get_libdir)"
newins - "libc++.so.${lib_version}-gdb.py" <<-EOF
__import__("sys").path.insert(0, "${EPREFIX}/usr/share/libc++/gdb")
__import__("printers").register_libcxx_printer_loader()
EOF
}
# Usage: deps
gen_ldscript() {
local output_format
output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p')
[[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )"
cat <<-END_LDSCRIPT
/* GNU ld script
Include missing dependencies
*/
${output_format}
GROUP ( $@ )
END_LDSCRIPT
}
gen_static_ldscript() {
# Move it first.
mv "${libdir}"/libc++{,_static}.a || die
# Generate libc++.a ldscript for inclusion of its dependencies so that
# clang++ -stdlib=libc++ -static works out of the box.
local deps=(
libc++_static.a
$(usex libcxxabi libc++abi.a libsupc++.a)
)
# On Linux/glibc it does not link without libpthread or libdl. It is
# fine on FreeBSD.
use elibc_glibc && deps+=( libpthread.a libdl.a )
gen_ldscript "${deps[*]}" > "${libdir}"/libc++.a || die
}
gen_shared_ldscript() {
# Move it first.
mv "${libdir}"/libc++{,_shared}.so || die
local deps=(
libc++_shared.so
# libsupc++ doesn't have a shared version
$(usex libcxxabi libc++abi.so libsupc++.a)
)
gen_ldscript "${deps[*]}" > "${libdir}"/libc++.so || die
}

View File

@@ -13,4 +13,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,146 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake-multilib crossdev flag-o-matic llvm.org llvm-utils
inherit python-any-r1 toolchain-funcs
DESCRIPTION="Low level support for a standard C++ library"
HOMEPAGE="https://libcxxabi.llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
SLOT="0"
IUSE="+clang +static-libs test"
REQUIRED_USE="test? ( clang )"
RESTRICT="!test? ( test )"
DEPEND="
${RDEPEND}
llvm-core/llvm:${LLVM_MAJOR}
"
BDEPEND="
clang? (
llvm-core/clang:${LLVM_MAJOR}
llvm-core/clang-linker-config:${LLVM_MAJOR}
llvm-runtimes/clang-rtlib-config:${LLVM_MAJOR}
llvm-runtimes/clang-unwindlib-config:${LLVM_MAJOR}
)
!test? (
${PYTHON_DEPS}
)
test? (
$(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
)
"
LLVM_COMPONENTS=( runtimes libcxx{abi,} llvm/{cmake,utils} cmake )
LLVM_TEST_COMPONENTS=( libc llvm/include/llvm/{Demangle,Testing} )
llvm.org_set_globals
python_check_deps() {
use test || return 0
python_has_version "dev-python/lit[${PYTHON_USEDEP}]"
}
test_compiler() {
target_is_not_host && return
$(tc-getCXX) ${CXXFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c - \
<<<'int main() { return 0; }' &>/dev/null
}
multilib_src_configure() {
# Workaround for bgo #961153.
# TODO: Fix the multilib.eclass, so it sets CTARGET properly.
if ! is_crosspkg; then
export CTARGET=${CHOST}
fi
if use clang; then
llvm_prepend_path -b "${LLVM_MAJOR}"
local -x CC=${CTARGET}-clang-${LLVM_MAJOR}
local -x CXX=${CTARGET}-clang++-${LLVM_MAJOR}
strip-unsupported-flags
# The full clang configuration might not be ready yet. Use the partial
# configuration of components that libunwind depends on.
local flags=(
--config="${ESYSROOT}"/etc/clang/"${LLVM_MAJOR}"/gentoo-{rtlib,unwindlib,linker}.cfg
)
local -x CFLAGS="${CFLAGS} ${flags[@]}"
local -x CXXFLAGS="${CXXFLAGS} ${flags[@]}"
local -x LDFLAGS="${LDFLAGS} ${flags[@]}"
fi
local nostdlib_flags=( -nostdlib++ )
if ! test_compiler && test_compiler "${nostdlib_flags[@]}"; then
local -x LDFLAGS="${LDFLAGS} ${nostdlib_flags[*]}"
ewarn "${CXX} seems to lack stdlib, trying with ${nostdlib_flags[*]}"
fi
# link to compiler-rt
local use_compiler_rt=OFF
[[ $(tc-get-c-rtlib) == compiler-rt ]] && use_compiler_rt=ON
local libdir=$(get_libdir)
local mycmakeargs=(
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
-DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
-DPython3_EXECUTABLE="${PYTHON}"
-DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx"
-DLLVM_INCLUDE_TESTS=OFF
-DLLVM_LIBDIR_SUFFIX=${libdir#lib}
-DLIBCXXABI_ENABLE_SHARED=ON
-DLIBCXXABI_ENABLE_STATIC=$(usex static-libs)
-DLIBCXXABI_INCLUDE_TESTS=$(usex test)
-DLIBCXXABI_USE_COMPILER_RT=${use_compiler_rt}
# upstream is omitting standard search path for this
# probably because gcc & clang are bundling their own unwind.h
-DLIBCXXABI_LIBUNWIND_INCLUDES="${EPREFIX}"/usr/include
# this is broken with standalone builds, and also meaningless
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF
-DLIBCXX_ENABLE_SHARED=ON
-DLIBCXX_ENABLE_STATIC=OFF
-DLIBCXX_CXX_ABI=libcxxabi
-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF
-DLIBCXX_HAS_MUSL_LIBC=$(llvm_cmake_use_musl)
-DLIBCXX_HAS_GCC_S_LIB=OFF
-DLIBCXX_INCLUDE_BENCHMARKS=OFF
-DLIBCXX_INCLUDE_TESTS=OFF
)
if is_crosspkg; then
mycmakeargs+=(
# Without this, the compiler will compile a test program
# and fail due to no builtins.
-DCMAKE_C_COMPILER_WORKS=1
-DCMAKE_CXX_COMPILER_WORKS=1
# Install inside the cross sysroot.
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/${CTARGET}/usr"
)
fi
if use test; then
mycmakeargs+=(
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
-DPython3_EXECUTABLE="${PYTHON}"
)
fi
cmake_src_configure
}
multilib_src_compile() {
cmake_build cxxabi
}
multilib_src_test() {
local -x LIT_PRESERVES_TMP=1
cmake_build check-cxxabi
}
multilib_src_install() {
DESTDIR="${D}" cmake_build install-cxxabi
}

View File

@@ -9,4 +9,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,173 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake crossdev flag-o-matic llvm.org llvm-utils python-any-r1
inherit toolchain-funcs
DESCRIPTION="Compiler runtime library for clang, compatible with libgcc_s"
HOMEPAGE="https://llvm.org/"
LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
SLOT="0"
IUSE="debug test"
DEPEND="
~llvm-runtimes/libunwind-${PV}[static-libs]
"
RDEPEND="
${DEPEND}
!sys-devel/gcc
"
BDEPEND="
llvm-core/clang:${LLVM_MAJOR}
test? (
$(python_gen_any_dep ">=dev-python/lit-15[\${PYTHON_USEDEP}]")
=llvm-core/clang-${LLVM_VERSION}*:${LLVM_MAJOR}
)
!test? (
${PYTHON_DEPS}
)
"
LLVM_COMPONENTS=( compiler-rt cmake llvm/cmake llvm-libgcc third-party/siphash )
LLVM_TEST_COMPONENTS=( llvm/include/llvm/TargetParser )
llvm.org_set_globals
python_check_deps() {
use test || return 0
python_has_version ">=dev-python/lit-15[${PYTHON_USEDEP}]"
}
pkg_setup() {
if target_is_not_host || tc-is-cross-compiler ; then
# strips vars like CFLAGS="-march=x86_64-v3" for non-x86 architectures
CHOST=${CTARGET} strip-unsupported-flags
# overrides host docs otherwise
DOCS=()
fi
python-any-r1_pkg_setup
}
src_configure() {
# We need to build a separate copy of compiler-rt, because we need to disable the
# COMPILER_RT_BUILTINS_HIDE_SYMBOLS option - compatibility with libgcc requires
# visibility of all symbols.
llvm_prepend_path -b "${LLVM_MAJOR}"
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
export CC=${CTARGET}-clang CXX=${CTARGET}-clang++
strip-unsupported-flags
local mycmakeargs=(
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${LLVM_MAJOR}"
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
-DCOMPILER_RT_INCLUDE_TESTS=$(usex test)
-DCOMPILER_RT_BUILD_CRT=OFF
-DCOMPILER_RT_BUILD_CTX_PROFILE=OFF
-DCOMPILER_RT_BUILD_LIBFUZZER=OFF
-DCOMPILER_RT_BUILD_MEMPROF=OFF
-DCOMPILER_RT_BUILD_ORC=OFF
-DCOMPILER_RT_BUILD_PROFILE=OFF
-DCOMPILER_RT_BUILD_SANITIZERS=OFF
-DCOMPILER_RT_BUILD_XRAY=OFF
-DCOMPILER_RT_BUILTINS_HIDE_SYMBOLS=OFF
-DPython3_EXECUTABLE="${PYTHON}"
)
# disable building non-native runtimes since we don't do multilib
if use amd64; then
mycmakeargs+=(
-DCAN_TARGET_i386=OFF
)
fi
if use test; then
mycmakeargs+=(
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
-DCOMPILER_RT_TEST_COMPILER="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin/clang"
-DCOMPILER_RT_TEST_CXX_COMPILER="${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin/clang++"
)
fi
cmake_src_configure
}
# Usage: deps
gen_ldscript() {
local output_format
output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p')
[[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )"
cat <<-END_LDSCRIPT
/* GNU ld script
Include missing dependencies
*/
${output_format}
GROUP ( $@ )
END_LDSCRIPT
}
src_compile() {
cmake_src_compile
local rtlib=$(
"${CC}" -rtlib=compiler-rt -resource-dir="${BUILD_DIR}" \
-print-libgcc-file-name || die
)
# Use the llvm-libgcc's version script to produce libgcc.{a,so}, which
# combines compiler-rt and libunwind into a libgcc replacement.
#
# What we do here is similar to what upstream does[0], with the following
# differences:
#
# * We build the local copy of compiler-rt manually, to have a full control
# over CMake options.
# * Upstream links the locally built copy of libunwind statically. We link the
# system-wide libunwind dynamically.
#
# [0] https://github.com/llvm/llvm-project/blob/llvmorg-19.1.7/llvm-libgcc/CMakeLists.txt#L102-L120
"${CC}" -E -xc \
"${WORKDIR}/llvm-libgcc/gcc_s.ver.in" \
-o gcc_s.ver || die
"${CC}" -nostdlib \
${LDFLAGS} \
-Wl,--version-script,gcc_s.ver \
-Wl,--undefined-version \
-Wl,--whole-archive \
"${rtlib}" \
-Wl,-soname,libgcc_s.so.1.0 \
-lc -lunwind -shared \
-o libgcc_s.so.1.0 || die
# Generate libgcc_s.so ldscript for inclusion of libunwind as a
# dependency so that `clang -lgcc_s` works out of the box.
gen_ldscript libgcc_s.so.1.0 libunwind.so.1.0 > libgcc_s.so || die
cp "${rtlib}" libgcc.a || die
}
src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
cmake_build check-builtins
}
src_install() {
local libdir=$(get_libdir)
dolib.so libgcc_s.so.1.0 libgcc_s.so
dolib.a libgcc.a
dosym libgcc_s.so.1.0 "/usr/${libdir}/libgcc_s.so.1"
dosym libunwind.a "/usr/${libdir}/libgcc_eh.a"
}

View File

@@ -13,4 +13,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,193 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake-multilib crossdev flag-o-matic llvm.org llvm-utils
inherit python-any-r1 toolchain-funcs
DESCRIPTION="C++ runtime stack unwinder from LLVM"
HOMEPAGE="https://llvm.org/docs/ExceptionHandling.html"
LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
SLOT="0"
IUSE="+clang +debug static-libs test"
REQUIRED_USE="test? ( clang )"
RESTRICT="!test? ( test )"
RDEPEND="
!sys-libs/libunwind
"
DEPEND="
llvm-core/llvm:${LLVM_MAJOR}
"
BDEPEND="
clang? (
llvm-core/clang:${LLVM_MAJOR}
llvm-core/clang-linker-config:${LLVM_MAJOR}
llvm-runtimes/clang-rtlib-config:${LLVM_MAJOR}
)
!test? (
${PYTHON_DEPS}
)
test? (
$(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]')
)
"
LLVM_COMPONENTS=( runtimes libunwind libcxx llvm/{cmake,utils} cmake )
LLVM_TEST_COMPONENTS=( libc libcxxabi )
llvm.org_set_globals
python_check_deps() {
use test || return 0
python_has_version "dev-python/lit[${PYTHON_USEDEP}]"
}
test_compiler() {
target_is_not_host && return
local compiler=${1}
shift
${compiler} ${CFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c - \
<<<'int main() { return 0; }' &>/dev/null
}
multilib_src_configure() {
if use clang; then
llvm_prepend_path -b "${LLVM_MAJOR}"
fi
local libdir=$(get_libdir)
# https://github.com/llvm/llvm-project/issues/56825
# also separately bug #863917
filter-lto
# Workaround for bgo #961153.
# TODO: Fix the multilib.eclass, so it sets CTARGET properly.
if ! is_crosspkg; then
export CTARGET=${CHOST}
fi
if use clang; then
local -x CC=${CTARGET}-clang-${LLVM_MAJOR}
local -x CXX=${CTARGET}-clang++-${LLVM_MAJOR}
strip-unsupported-flags
# The full clang configuration might not be ready yet. Use the partial
# configuration files that are guaranteed to exist even during initial
# installations and upgrades.
local flags=(
--config="${ESYSROOT}"/etc/clang/"${LLVM_MAJOR}"/gentoo-{rtlib,linker}.cfg
)
local -x CFLAGS="${CFLAGS} ${flags[@]}"
local -x CXXFLAGS="${CXXFLAGS} ${flags[@]}"
local -x LDFLAGS="${LDFLAGS} ${flags[@]}"
fi
# Check whether C compiler runtime is available.
if ! test_compiler "$(tc-getCC)"; then
local nolib_flags=( -nodefaultlibs -lc )
if test_compiler "$(tc-getCC)" "${nolib_flags[@]}"; then
local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
ewarn "${CC} seems to lack runtime, trying with ${nolib_flags[*]}"
elif test_compiler "$(tc-getCC)" "${nolib_flags[@]}" -nostartfiles; then
# Avoiding -nostartfiles earlier on for bug #862540,
# and set available entry symbol for bug #862798.
nolib_flags+=( -nostartfiles -e main )
local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
ewarn "${CC} seems to lack runtime, trying with ${nolib_flags[*]}"
fi
fi
# Check whether C++ standard library is available,
local nostdlib_flags=( -nostdlib++ )
if ! test_compiler "$(tc-getCXX)" &&
test_compiler "$(tc-getCXX)" "${nostdlib_flags[@]}"
then
local -x LDFLAGS="${LDFLAGS} ${nostdlib_flags[*]}"
ewarn "${CXX} seems to lack runtime, trying with ${nostdlib_flags[*]}"
fi
# link to compiler-rt
# https://github.com/gentoo/gentoo/pull/21516
local use_compiler_rt=OFF
[[ $(tc-get-c-rtlib) == compiler-rt ]] && use_compiler_rt=ON
# Respect upstream build type assumptions (bug #910436) where they do:
# -DLIBUNWIND_ENABLE_ASSERTIONS=ON =>
# -DCMAKE_BUILD_TYPE=DEBUG => -UNDEBUG
# -DCMAKE_BUILD_TYPE!=debug => -DNDEBUG
# -DLIBUNWIND_ENABLE_ASSERTIONS=OFF =>
# -UNDEBUG
# See also https://github.com/llvm/llvm-project/issues/86#issuecomment-1649668826.
use debug || append-cppflags -DNDEBUG
local mycmakeargs=(
-DLLVM_ROOT="${ESYSROOT}/usr/lib/llvm/${LLVM_MAJOR}"
-DCMAKE_C_COMPILER_TARGET="${CTARGET}"
-DCMAKE_CXX_COMPILER_TARGET="${CTARGET}"
-DPython3_EXECUTABLE="${PYTHON}"
-DLLVM_ENABLE_RUNTIMES="libunwind"
-DLLVM_LIBDIR_SUFFIX=${libdir#lib}
-DLLVM_INCLUDE_TESTS=OFF
-DLIBUNWIND_ENABLE_ASSERTIONS=$(usex debug)
-DLIBUNWIND_ENABLE_STATIC=$(usex static-libs)
-DLIBUNWIND_INCLUDE_TESTS=$(usex test)
-DLIBUNWIND_INSTALL_HEADERS=ON
# cross-unwinding increases unwinding footprint (to account
# for the worst case) and causes some breakage on AArch64
# https://github.com/llvm/llvm-project/issues/152549
-DLIBUNWIND_ENABLE_CROSS_UNWINDING=OFF
# avoid dependency on libgcc_s if compiler-rt is used
-DLIBUNWIND_USE_COMPILER_RT=${use_compiler_rt}
)
if is_crosspkg; then
mycmakeargs+=(
# Without this, the compiler will compile a test program
# and fail due to no builtins.
-DCMAKE_C_COMPILER_WORKS=1
-DCMAKE_CXX_COMPILER_WORKS=1
# Install inside the cross sysroot.
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/${CTARGET}/usr"
)
fi
if use test; then
mycmakeargs+=(
-DLLVM_ENABLE_RUNTIMES="libunwind;libcxxabi;libcxx"
-DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
-DLLVM_LIT_ARGS="$(get_lit_flags)"
-DLIBUNWIND_LIBCXX_PATH="${WORKDIR}/libcxx"
-DLIBCXXABI_LIBDIR_SUFFIX=
-DLIBCXXABI_ENABLE_SHARED=OFF
-DLIBCXXABI_ENABLE_STATIC=ON
-DLIBCXXABI_USE_LLVM_UNWINDER=ON
-DLIBCXXABI_INCLUDE_TESTS=OFF
-DLIBCXX_LIBDIR_SUFFIX=
-DLIBCXX_ENABLE_SHARED=OFF
-DLIBCXX_ENABLE_STATIC=ON
-DLIBCXX_CXX_ABI=libcxxabi
-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF
-DLIBCXX_HAS_MUSL_LIBC=$(llvm_cmake_use_musl)
-DLIBCXX_HAS_GCC_S_LIB=OFF
-DLIBCXX_INCLUDE_TESTS=OFF
-DLIBCXX_INCLUDE_BENCHMARKS=OFF
)
fi
cmake_src_configure
}
multilib_src_test() {
local -x LIT_PRESERVES_TMP=1
cmake_build check-unwind
}
multilib_src_install() {
DESTDIR=${D} cmake_build install-unwind
}

View File

@@ -3,4 +3,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,42 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake flag-o-matic llvm.org
DESCRIPTION="OpenMP target library for amdgcn devices"
HOMEPAGE="https://openmp.llvm.org"
LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
SLOT="0/${LLVM_SOABI}"
RDEPEND="
!<llvm-runtimes/offload-22[llvm_targets_AMDGPU(-)]
"
BDEPEND="
~llvm-core/clang-${PV}:${LLVM_MAJOR}[llvm_targets_AMDGPU]
llvm-core/lld:${LLVM_MAJOR}[llvm_targets_AMDGPU]
"
LLVM_COMPONENTS=(
runtimes openmp cmake llvm/{cmake,utils} libc/shared
offload/include
)
llvm.org_set_globals
src_configure() {
local -x CC=${CHOST}-clang-${LLVM_MAJOR}
local -x CXX=${CHOST}-clang++-${LLVM_MAJOR}
local triple=${PN#openmp-}
filter-flags '-m*'
strip-unsupported-flags
local mycmakeargs=(
-DLLVM_DEFAULT_TARGET_TRIPLE=${triple}
-DLLVM_ENABLE_RUNTIMES=openmp
-DOPENMP_INSTALL_LIBDIR="$(get_libdir)/${triple}"
)
cmake_src_configure
}

View File

@@ -3,4 +3,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,42 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake flag-o-matic llvm.org
DESCRIPTION="OpenMP target library for nvptx64 devices"
HOMEPAGE="https://openmp.llvm.org"
LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
SLOT="0/${LLVM_SOABI}"
RDEPEND="
!<llvm-runtimes/offload-22[llvm_targets_NVPTX(-)]
"
BDEPEND="
~llvm-core/clang-${PV}:${LLVM_MAJOR}[llvm_targets_NVPTX]
llvm-core/lld:${LLVM_MAJOR}[llvm_targets_NVPTX]
"
LLVM_COMPONENTS=(
runtimes openmp cmake llvm/{cmake,utils} libc/shared
offload/include
)
llvm.org_set_globals
src_configure() {
local -x CC=${CHOST}-clang-${LLVM_MAJOR}
local -x CXX=${CHOST}-clang++-${LLVM_MAJOR}
local triple=${PN#openmp-}
filter-flags '-m*'
strip-unsupported-flags
local mycmakeargs=(
-DLLVM_DEFAULT_TARGET_TRIPLE=${triple}
-DLLVM_ENABLE_RUNTIMES=openmp
-DOPENMP_INSTALL_LIBDIR="$(get_libdir)/${triple}"
)
cmake_src_configure
}

View File

@@ -1,4 +1,6 @@
DIST llvm-project-0bf3638ddfe6e8bb3b79ebe8c2a918384a5df612.tar.gz 278258416 BLAKE2B 85007e0dfc4d5908c2fb0863923ef86e6a6c0d4302da6cbefd97097d6c19066234ca76a06af1c404aab7c3fe85ba6d9ac08aca5343b5f24fc3727dde1de2245e SHA512 91c6bab8974b95725cb70d2e3bef5abc5358e6836fe00c6348d4a886914b424fb49e9b0a85cf67af7b3a8f0c863d33d22fe74fffc63da813d7d63e3e0e32cf85
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,42 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake flag-o-matic llvm.org
DESCRIPTION="OpenMP target library for spirv64 Intel devices"
HOMEPAGE="https://openmp.llvm.org"
LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
SLOT="0/${LLVM_SOABI}"
BDEPEND="
~llvm-core/clang-${PV}:${LLVM_MAJOR}[llvm_targets_SPIRV]
llvm-core/lld:${LLVM_MAJOR}[llvm_targets_SPIRV]
"
LLVM_COMPONENTS=(
runtimes openmp cmake llvm/{cmake,utils} libc/shared
offload/include
)
llvm.org_set_globals
src_configure() {
local -x CC=${CHOST}-clang-${LLVM_MAJOR}
local -x CXX=${CHOST}-clang++-${LLVM_MAJOR}
local triple=${PN#openmp-}
filter-flags '-m*'
strip-unsupported-flags
# https://github.com/llvm/llvm-project/issues/186598
filter-ldflags '-Wl,*'
local mycmakeargs=(
-DLLVM_DEFAULT_TARGET_TRIPLE=${triple}
-DLLVM_ENABLE_RUNTIMES=openmp
-DOPENMP_INSTALL_LIBDIR="$(get_libdir)/${triple}"
)
cmake_src_configure
}

View File

@@ -13,4 +13,6 @@ DIST llvm-project-22.1.8.src.tar.xz 167061596 BLAKE2B 092204f62e0f0364a041c737eb
DIST llvm-project-22.1.8.src.tar.xz.sig 119 BLAKE2B 2ce93472036e68782252991e4a8bdbeeec8706a56022220083a38a42ef18714a7894c41aaa04dc0d03f18601d8bfc1a5a030ed0ef0f0d64a662eae9843a4b362 SHA512 99a457b5b1fb409a5fe72b59ebd4ddae5cade3e5f2493e33b44d4f4b4625f7a1743f80106efb1134668842b15ea3400ce2c29263bec8ff986e05040910125e15
DIST llvm-project-23.1.0-rc2.src.tar.xz 179079292 BLAKE2B 59b4ae719ca496b29e37c1150d2953062d00d696e847d16710b6719c63246cccfb50c6f6bf33e7723e2e3757c8b1cae51a3c6a6787b6d45c808c78902ac01c97 SHA512 9ca8d0aa34f2910abc06edb832831c1a66209e7e78cffabcc52113fe0d6d96af57f4f67788ae23026c0f3b91dc8f6224cb46dfa0f1bcc41a1f60cbad5ec1623d
DIST llvm-project-23.1.0-rc2.src.tar.xz.sig 466 BLAKE2B c7acaa7f8833286cd0037c4c31ba8a1bb20f4a09b62979c7df9f69993728406b1a42db62d2ab2a34c526c0bdae1bc027074a623142420d2fc264c3f83e3c0f7b SHA512 7e2db57ed17efe3bf36c476049973b760af60c8a9302992a17e050e7a61db7b92df0b6c06f26989c61ce2e4682e7604bfdd0f063e322a726923e857890cedc8c
DIST llvm-project-23.1.0-rc3.src.tar.xz 179126732 BLAKE2B f0843aacbf9ebd57929dbba0436773775dc121223ae3a81d1c30bd5a3ccba136359b9e483d2be58546dc6bf468743711d5057f8b1486e5ba4d59a96136426c3c SHA512 0c9bdf4c75784269bd4560d94126e667d1d145da2f6db4d94f437b2388880f3dcb52f85c0580d78e2597b141511a4b7ddadfc31f83b690d5cd383e84330ce247
DIST llvm-project-23.1.0-rc3.src.tar.xz.sig 466 BLAKE2B c7bd61c1cab2bdb4c8026aa095f7543e7c2f50520531f3ca6bd8c0cb78b2a7770d39723cec6effe9366c260d01b0db2bfd072281790b63b7d0d8b48339f51c42 SHA512 751f602d29235d4ce58a0d38c23f360977cb9e978e04399b3032053e7168903a721d307f001864b73fef8f567023eebe8f4fdbf4124667789d0afaff57b01d7d
DIST llvm-project-bb9934d4dfef9033ded36d26827dbb6d3ac1dd92.tar.gz 277566365 BLAKE2B 401320655d19b3d430d15a48e2daf1f00567ef87fd2d1f86c3d505a1b2f5920db6cbfa620bf1b0561cd318d6046830d5b19fe0e7b58647863372c6c96526526c SHA512 354b901ca80227abe6b0514eeba437f237ea2658dd1927bb6e1d3b0b298bdb0dfdb7855c0f359eea4977dd344f6d0f6d1ce486ea0100d4a5615a9139ef198fca

View File

@@ -0,0 +1,177 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
inherit cmake-multilib crossdev flag-o-matic llvm.org python-single-r1
inherit toolchain-funcs
DESCRIPTION="OpenMP runtime libraries for LLVM/clang compiler"
HOMEPAGE="https://openmp.llvm.org"
LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
SLOT="0/${LLVM_SOABI}"
IUSE="
+clang +debug gdb-plugin hwloc offload ompt test
cuda level-zero rocm
"
REQUIRED_USE="
gdb-plugin? ( ${PYTHON_REQUIRED_USE} )
"
RESTRICT="!test? ( test )"
DEPEND="
hwloc? ( >=sys-apps/hwloc-2.5:0=[${MULTILIB_USEDEP}] )
offload? (
dev-libs/libffi:=
~llvm-core/llvm-${PV}
level-zero? ( dev-libs/level-zero:= )
rocm? ( dev-libs/rocr-runtime:= )
)
"
# tests:
# - dev-python/lit provides the test runner
# - llvm-core/llvm provide test utils (e.g. FileCheck)
# - llvm-core/clang provides the compiler to run tests
RDEPEND="
${DEPEND}
gdb-plugin? ( ${PYTHON_DEPS} )
offload? (
!llvm-runtimes/offload
cuda? ( ~llvm-runtimes/openmp-nvptx64-nvidia-cuda-${PV} )
level-zero? ( ~llvm-runtimes/openmp-spirv64-intel-${PV} )
rocm? ( ~llvm-runtimes/openmp-amdgcn-amd-amdhsa-${PV} )
)
"
BDEPEND="
dev-lang/perl
clang? ( llvm-core/clang )
gdb-plugin? ( ${PYTHON_DEPS} )
offload? (
virtual/pkgconfig
)
test? (
${PYTHON_DEPS}
$(python_gen_cond_dep '
dev-python/lit[${PYTHON_USEDEP}]
')
llvm-core/clang:${LLVM_MAJOR}
llvm-core/llvm:${LLVM_MAJOR}
)
"
LLVM_COMPONENTS=(
runtimes openmp offload cmake libc llvm/{cmake,include,utils}
third-party/unittest
)
llvm.org_set_globals
MULTILIB_WRAPPED_HEADERS=(
/usr/include/offload/OffloadPrint.hpp
/usr/include/offload/OffloadAPI.h
)
pkg_pretend() {
if [[ ${LLVM_ALLOW_GPU_TESTING} ]]; then
ewarn "LLVM_ALLOW_GPU_TESTING set. This package will run tests against your"
ewarn "GPU if it is supported. Note that these tests may be flaky, fail or"
ewarn "hang, or even cause your GPU to crash (requiring a reboot)."
fi
}
pkg_setup() {
if use gdb-plugin || use test; then
python-single-r1_pkg_setup
fi
}
multilib_src_configure() {
if use clang && ! is_crosspkg; then
# Only do this conditionally to allow overriding with
# e.g. CC=clang-13 in case of breakage
if ! tc-is-clang ; then
local -x CC=${CHOST}-clang
local -x CXX=${CHOST}-clang++
fi
strip-unsupported-flags
fi
# LTO causes issues in other packages building, #870127
filter-lto
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
local libdir="$(get_libdir)"
local mycmakeargs=(
-DLLVM_ENABLE_RUNTIMES=openmp
-DLLVM_LIBDIR_SUFFIX="${libdir#lib}"
-DLLVM_BINARY_DIR="${BROOT}/usr/lib/llvm/${LLVM_MAJOR}"
-DLIBOMP_USE_HWLOC=$(usex hwloc)
-DLIBOMP_OMPD_GDB_SUPPORT=$(multilib_native_usex gdb-plugin)
-DLIBOMP_OMPT_SUPPORT=$(usex ompt)
# do not install libgomp.so & libiomp5.so aliases
-DLIBOMP_INSTALL_ALIASES=OFF
# disable unnecessary hack copying stuff back to srcdir
-DLIBOMP_COPY_EXPORTS=OFF
# this breaks building static target libs
-DBUILD_SHARED_LIBS=OFF
)
if multilib_is_native_abi && use offload; then
local ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
local ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
local plugins="host"
if has "${CHOST%%-*}" aarch64 powerpc64le x86_64; then
if use rocm; then
plugins+=";amdgpu"
fi
if use cuda; then
plugins+=";cuda"
fi
if use level-zero; then
plugins+=";level_zero"
fi
fi
mycmakeargs+=(
-DLLVM_ENABLE_RUNTIMES="openmp;offload"
-DOFFLOAD_INCLUDE_TESTS=$(usex test)
-DLIBOMPTARGET_PLUGINS_TO_BUILD="${plugins}"
-DLIBOMPTARGET_OMPT_SUPPORT="$(usex ompt)"
)
[[ ! ${LLVM_ALLOW_GPU_TESTING} ]] && mycmakeargs+=(
# prevent trying to access the GPU
-DLIBOMPTARGET_AMDGPU_ARCH=LIBOMPTARGET_AMDGPU_ARCH-NOTFOUND
-DLIBOMPTARGET_NVPTX_ARCH=LIBOMPTARGET_NVPTX_ARCH-NOTFOUND
-DLIBOMPTARGET_OFFLOAD_ARCH=LIBOMPTARGET_OFFLOAD_ARCH-NOTFOUND
)
fi
use test && mycmakeargs+=(
-DLLVM_LIT_ARGS="$(get_lit_flags)"
-DOPENMP_TEST_C_COMPILER="$(type -P "${CHOST}-clang-${LLVM_MAJOR}")"
-DOPENMP_TEST_CXX_COMPILER="$(type -P "${CHOST}-clang++-${LLVM_MAJOR}")"
# disable Fortran tests for now
# (TODO: enable where we have flang keyworded)
-DOPENMP_TEST_Fortran_COMPILER=
)
cmake_src_configure
}
multilib_src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
local targets=( check-openmp )
if multilib_is_native_abi && use offload; then
targets+=( check-offload check-offload-unit )
fi
cmake_build "${targets[@]}"
}

View File

@@ -1,3 +1,2 @@
DIST mlt-7.34.1.tar.gz 1817867 BLAKE2B 45a422b12dca99fcd95af9f2c540497e2aa97210f6674726884b0eb8d1f321706679512675ff21993c997d9332be7128ce93f689c8f7612d68952ea87e6c56e5 SHA512 de71d698e8adc03d4e3c66c5e1d4dbf2e91848b2260e29084401a56d49493f28671c5c0979922dc46864ee3991ef35cab2cd9be6b88bb67dc49e36488f87050e
DIST mlt-7.38.0.tar.gz 6674009 BLAKE2B 4843dbca30cdec26b3b340901ca1a3603bb9ce6565620218d017f0b848e1991fcc3cf0fe6354ec95d9c557cbcfd6e9f0e5a61f3aa9653b1c92822a4fb941af8c SHA512 762f7470eb294e6923206d9793ec65341eb6712c5b0251366dcd565ef84f59a0dc9c01a0695ce2c6b2f427d3a99fc38207ccf92905f105325720af9ce7e534b8
DIST mlt-7.40.0.tar.gz 6775875 BLAKE2B e2eb028abc339e6b39a9ea1656e351bd137430d5a736552a79eb4ce7ca904a097804b9e2aed71cbf401983e9b436913e113d3d0a9dfbf76ce77116a00c16c11e SHA512 f595f18777b0a69aff18270176f528865a38083439a320e206eba381b9ee8de9efc78bf1ae65355a6fd72265d91d2487f7ac54e57dcbdef1e1152049d2ceed25

View File

@@ -0,0 +1,158 @@
From 06c4785f951c087c700de942362d1d1c68ffe500 Mon Sep 17 00:00:00 2001
From: Dan Dennedy <dan@dennedy.org>
Date: Thu, 6 Aug 2026 17:14:24 -0700
Subject: [PATCH] Fix #1280 support for FFmpeg 9 (#1281)
---
src/modules/avformat/consumer_avformat.c | 61 ++++++++++++++++++++--
src/modules/avformat/consumer_avformat.yml | 6 ++-
2 files changed, 63 insertions(+), 4 deletions(-)
diff --git a/src/modules/avformat/consumer_avformat.c b/src/modules/avformat/consumer_avformat.c
index d5ab5f1cd..cebd89f0e 100644
--- a/src/modules/avformat/consumer_avformat.c
+++ b/src/modules/avformat/consumer_avformat.c
@@ -629,7 +629,8 @@ static void apply_properties(void *obj, mlt_properties properties, int flags)
|| (opt_name[0] == 'a' && (flags & AV_OPT_FLAG_AUDIO_PARAM))))
opt = av_opt_find(obj, ++opt_name, NULL, flags, search_flags);
// Apply option if found
- if (opt && strcmp(opt_name, "channel_layout") && strcmp(opt_name, "frame_duration"))
+ if (opt && strcmp(opt_name, "channel_layout") && strcmp(opt_name, "frame_duration")
+ && strcmp(opt_name, "dc"))
av_opt_set(obj, opt_name, mlt_properties_get_value(properties, i), search_flags);
}
}
@@ -680,7 +681,6 @@ static int pick_sample_fmt(mlt_properties properties, const AVCodec *codec)
{
int sample_fmt = AV_SAMPLE_FMT_S16;
const char *format = mlt_properties_get(properties, "mlt_audio_format");
- const int *p = codec->sample_fmts;
const char *sample_fmt_str = mlt_properties_get(properties, "sample_fmt");
if (sample_fmt_str)
@@ -699,13 +699,29 @@ static int pick_sample_fmt(mlt_properties properties, const AVCodec *codec)
else if (!strcmp(format, "float"))
sample_fmt = AV_SAMPLE_FMT_FLTP;
}
+#if LIBAVCODEC_VERSION_INT >= ((61 << 16) + (13 << 8) + 100)
+ const enum AVSampleFormat *sample_fmts = NULL;
+ avcodec_get_supported_config(NULL,
+ codec,
+ AV_CODEC_CONFIG_SAMPLE_FORMAT,
+ 0,
+ (const void **) &sample_fmts,
+ NULL);
+ const int *p = (const int *) sample_fmts;
+#else
+ const int *p = codec->sample_fmts;
+#endif
// check if codec supports our mlt_audio_format
- for (; *p != -1; p++) {
+ for (; p && *p != -1; p++) {
if (*p == sample_fmt)
return sample_fmt;
}
// no match - pick first one we support
+#if LIBAVCODEC_VERSION_INT >= ((61 << 16) + (13 << 8) + 100)
+ for (p = (const int *) sample_fmts; p && *p != -1; p++) {
+#else
for (p = codec->sample_fmts; *p != -1; p++) {
+#endif
switch (*p) {
case AV_SAMPLE_FMT_U8:
case AV_SAMPLE_FMT_S16:
@@ -980,9 +996,25 @@ static AVStream *add_video_stream(mlt_consumer consumer,
c->framerate = av_inv_q(c->time_base);
// Default to the codec's first pix_fmt if possible.
+#if LIBAVCODEC_VERSION_INT >= ((61 << 16) + (13 << 8) + 100)
+ {
+ const enum AVPixelFormat *video_pix_fmts = NULL;
+ if (codec)
+ avcodec_get_supported_config(NULL,
+ codec,
+ AV_CODEC_CONFIG_PIX_FORMAT,
+ 0,
+ (const void **) &video_pix_fmts,
+ NULL);
+ c->pix_fmt = pix_fmt ? av_get_pix_fmt(pix_fmt)
+ : codec ? (video_pix_fmts ? video_pix_fmts[0] : AV_PIX_FMT_YUV422P)
+ : AV_PIX_FMT_YUV420P;
+ }
+#else
c->pix_fmt = pix_fmt ? av_get_pix_fmt(pix_fmt)
: codec ? (codec->pix_fmts ? codec->pix_fmts[0] : AV_PIX_FMT_YUV422P)
: AV_PIX_FMT_YUV420P;
+#endif
if (AV_PIX_FMT_VAAPI == c->pix_fmt) {
int result = init_vaapi(properties, c);
@@ -1082,7 +1114,9 @@ static AVStream *add_video_stream(mlt_consumer consumer,
c->rc_override_count = i;
if (!c->rc_initial_buffer_occupancy)
c->rc_initial_buffer_occupancy = c->rc_buffer_size * 3 / 4;
+#if LIBAVCODEC_VERSION_INT < ((62 << 16) + (25 << 8) + 100)
c->intra_dc_precision = mlt_properties_get_int(properties, "dc") - 8;
+#endif
// Setup dual-pass
i = mlt_properties_get_int(properties, "pass");
@@ -1199,6 +1233,26 @@ static int open_video(mlt_properties properties,
AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM);
}
+#if LIBAVCODEC_VERSION_INT >= ((61 << 16) + (13 << 8) + 100)
+ if (codec) {
+ const enum AVPixelFormat *pix_fmts = NULL;
+ avcodec_get_supported_config(NULL,
+ codec,
+ AV_CODEC_CONFIG_PIX_FORMAT,
+ 0,
+ (const void **) &pix_fmts,
+ NULL);
+ if (pix_fmts) {
+ const enum AVPixelFormat *p = pix_fmts;
+ for (; *p != -1; p++) {
+ if (*p == video_enc->pix_fmt)
+ break;
+ }
+ if (*p == -1)
+ video_enc->pix_fmt = pix_fmts[0];
+ }
+ }
+#else
if (codec && codec->pix_fmts) {
const enum AVPixelFormat *p = codec->pix_fmts;
for (; *p != -1; p++) {
@@ -1208,6 +1262,7 @@ static int open_video(mlt_properties properties,
if (*p == -1)
video_enc->pix_fmt = codec->pix_fmts[0];
}
+#endif
const AVPixFmtDescriptor *srcDesc = av_pix_fmt_desc_get(video_enc->pix_fmt);
if (srcDesc->flags & AV_PIX_FMT_FLAG_RGB) {
diff --git a/src/modules/avformat/consumer_avformat.yml b/src/modules/avformat/consumer_avformat.yml
index 989466b55..f3644206c 100644
--- a/src/modules/avformat/consumer_avformat.yml
+++ b/src/modules/avformat/consumer_avformat.yml
@@ -3,7 +3,7 @@ type: consumer
identifier: avformat
title: FFmpeg Output
version: 7
-copyright: Copyright (C) 2003-2019 Meltytech, LLC
+copyright: Copyright (C) 2003-2026 Meltytech, LLC
license: LGPL
language: en
url: http://www.ffmpeg.org/
@@ -452,6 +452,10 @@ parameters:
- identifier: dc
title: Intra DC precision
type: integer
+ description: >
+ Sets intra_dc_precision for MPEG-2 encoding. The value is offset by 8,
+ so the default of 8 means precision 0 (8-bit). Only relevant for
+ MPEG-2; ignored on FFmpeg 8.0 and later.
default: 8
- identifier: muxdelay

View File

@@ -1,177 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..14} )
inherit python-single-r1 cmake flag-o-matic
DESCRIPTION="Open source multimedia framework for television broadcasting"
HOMEPAGE="https://www.mltframework.org/"
SRC_URI="https://github.com/mltframework/${PN}/releases/download/v${PV}/${P}.tar.gz"
LICENSE="GPL-3"
SLOT="0/7"
KEYWORDS="amd64 arm64 ~loong ~ppc64 ~riscv ~x86"
IUSE="debug ffmpeg frei0r gtk jack libsamplerate opencv opengl python qt6
rtaudio rubberband sdl test vdpau vidstab vorbis xine xml"
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
# Needs unpackaged 'kwalify'
RESTRICT="test"
# rtaudio will use OSS on non linux OSes
# Qt already needs FFTW/PLUS so let's just always have it on to ensure
# MLT is useful: bug #603168.
DEPEND="
>=media-libs/libebur128-1.2.2:=
sci-libs/fftw:3.0=
ffmpeg? ( media-video/ffmpeg:0=[vdpau?] )
frei0r? ( media-plugins/frei0r-plugins )
gtk? (
media-libs/libexif
x11-libs/pango
)
jack? (
>=dev-libs/libxml2-2.5:=
media-libs/ladspa-sdk
virtual/jack
)
libsamplerate? ( >=media-libs/libsamplerate-0.1.2 )
opencv? (
>=media-libs/opencv-4.5.1:=[contrib]
|| (
media-libs/opencv[ffmpeg]
media-libs/opencv[gstreamer]
)
)
opengl? (
media-libs/libglvnd
media-video/movit
)
python? ( ${PYTHON_DEPS} )
qt6? (
dev-qt/qt5compat:6
dev-qt/qtbase:6[gui,network,opengl,widgets,xml]
dev-qt/qtsvg:6
media-libs/libexif
x11-libs/libX11
)
rtaudio? (
>=media-libs/rtaudio-4.1.2
kernel_linux? ( media-libs/alsa-lib )
)
rubberband? ( media-libs/rubberband:= )
sdl? (
media-libs/libsdl2[X,opengl,video]
media-libs/sdl2-image
)
vidstab? ( media-libs/vidstab )
vorbis? ( media-libs/libvorbis )
xine? ( >=media-libs/xine-lib-1.1.2_pre20060328-r7 )
xml? ( >=dev-libs/libxml2-2.5:= )
"
# java? ( >=virtual/jre-1.8:* )
# perl? ( dev-lang/perl )
# php? ( dev-lang/php )
# ruby? ( ${RUBY_DEPS} )
# sox? ( media-sound/sox )
# tcl? ( dev-lang/tcl:0= )
RDEPEND="${DEPEND}"
BDEPEND="
virtual/pkgconfig
python? ( >=dev-lang/swig-2.0 )
"
DOCS=( AUTHORS NEWS README.md )
PATCHES=(
# downstream
"${FILESDIR}"/${PN}-6.10.0-swig-underlinking.patch
"${FILESDIR}"/${PN}-6.22.1-no_lua_bdepend.patch
"${FILESDIR}"/${PN}-7.0.1-cmake-symlink.patch
)
pkg_setup() {
use python && python-single-r1_pkg_setup
}
src_prepare() {
# Respect CFLAGS LDFLAGS when building shared libraries. Bug #308873
if use python; then
sed -i "/mlt.so/s/ -lmlt++ /& ${CFLAGS} ${LDFLAGS} /" src/swig/python/build || die
python_fix_shebang src/swig/python
fi
cmake_src_prepare
}
src_configure() {
# Workaround for bug #919981
append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
local mycmakeargs=(
-DCMAKE_SKIP_RPATH=ON
-DCLANG_FORMAT=OFF
-DGPL=ON
-DGPL3=ON
-DMOD_QT=OFF
-DMOD_GLAXNIMATE=OFF
-DMOD_KDENLIVE=ON
-DMOD_PLUS=ON
-DMOD_SDL1=OFF
-DMOD_SOX=OFF
-DMOD_SPATIALAUDIO=OFF # TODO: package libspatialaudio
-DUSE_LV2=OFF # TODO
-DUSE_VST2=OFF # TODO
-DMOD_AVFORMAT=$(usex ffmpeg)
-DMOD_FREI0R=$(usex frei0r)
-DMOD_GDK=$(usex gtk)
-DMOD_JACKRACK=$(usex jack)
-DMOD_RESAMPLE=$(usex libsamplerate)
-DMOD_OPENCV=$(usex opencv)
-DMOD_MOVIT=$(usex opengl)
-DMOD_QT6=$(usex qt6)
-DMOD_GLAXNIMATE_QT6=$(usex qt6)
-DMOD_RTAUDIO=$(usex rtaudio)
-DMOD_RUBBERBAND=$(usex rubberband)
-DMOD_SDL2=$(usex sdl)
-DBUILD_TESTING=OFF # Needs unpackaged 'kwalify'; restricted anyway.
-DMOD_VIDSTAB=$(usex vidstab)
-DMOD_VORBIS=$(usex vorbis)
-DMOD_XINE=$(usex xine)
-DMOD_XML=$(usex xml)
)
# TODO: rework upstream CMake to allow controlling MMX/SSE/SSE2
# TODO: add swig language bindings?
# see also https://www.mltframework.org/twiki/bin/view/MLT/ExtremeMakeover
if use python; then
mycmakeargs+=(
-DSWIG_PYTHON=ON
-DPython3_EXECUTABLE="${PYTHON}"
)
fi
cmake_src_configure
}
src_install() {
cmake_src_install
insinto /usr/share/${PN}
doins -r demo
#
# Install SWIG bindings
#
docinto swig
if use python; then
dodoc "${S}"/src/swig/python/play.py
python_optimize
fi
}

View File

@@ -95,6 +95,7 @@ PATCHES=(
"${FILESDIR}"/${PN}-6.10.0-swig-underlinking.patch
"${FILESDIR}"/${PN}-6.22.1-no_lua_bdepend.patch
"${FILESDIR}"/${PN}-7.0.1-cmake-symlink.patch
"${FILESDIR}"/${P}-ffmpeg-9.patch # in git master
)
pkg_setup() {