commit: 63b4ae7aaa6e520706e1237b649d8fe29f5aba83
Author: mojyack <mojyack <AT> gmail <DOT> com>
AuthorDate: Sat Nov 9 04:27:01 2024 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Nov 9 10:14:13 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=63b4ae7a
sys-libs/compiler-rt: enable atomic builtin
Several packages depend on GCC's libatomic to perform atomic operations.
For example, this compiles without -latomic:
```c
_Atomic struct {
int v[1];
} a;
atomic_store(&a, a);
```
But this fails with error "undefined reference to __atomic_store_16"
without -latomic:
```c
_Atomic struct {
int v[4];
} b;
atomic_store(&b, b);
```
LLVM does not have a libatomic.so, but an atomic builtin to support such
operations. However, it is disabled by default to allow use of system
libatomic while using LLVM as a compiler. Pure LLVM environments
without GCC installed require this builtin. This commit adds
`-DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF` cmake option to enable
the builtin.
Bug: https://bugs.gentoo.org/911340
Signed-off-by: mojyack <mojyack <AT> gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/39168
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
....0.9999.ebuild => compiler-rt-15.0.7-r2.ebuild} | 57 +++++++---------------
....0.9999.ebuild => compiler-rt-16.0.6-r6.ebuild} | 23 +++++----
....0.9999.ebuild => compiler-rt-17.0.6-r2.ebuild} | 23 +++++----
....0.9999.ebuild => compiler-rt-18.1.8-r2.ebuild} | 6 +--
....0.9999.ebuild => compiler-rt-19.1.3-r1.ebuild} | 4 +-
.../compiler-rt/compiler-rt-20.0.0.9999.ebuild | 1 +
6 files changed, 52 insertions(+), 62 deletions(-)
diff --git a/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
b/sys-libs/compiler-rt/compiler-rt-15.0.7-r2.ebuild
similarity index 70%
copy from sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
copy to sys-libs/compiler-rt/compiler-rt-15.0.7-r2.ebuild
index 7642499a8792..830a5dc0145e 100644
--- a/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
+++ b/sys-libs/compiler-rt/compiler-rt-15.0.7-r2.ebuild
@@ -3,16 +3,16 @@
EAPI=8
-PYTHON_COMPAT=( python3_{10..13} )
-inherit cmake crossdev flag-o-matic llvm.org llvm-utils python-any-r1
-inherit toolchain-funcs
+PYTHON_COMPAT=( python3_{10..11} )
+inherit cmake flag-o-matic llvm llvm.org python-any-r1 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 +clang +debug test"
+SLOT="${LLVM_VERSION}"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86 ~amd64-linux ~ppc-macos
~x64-macos"
+IUSE="+abi_x86_32 abi_x86_64 +clang debug test"
RESTRICT="!test? ( test ) !clang? ( test )"
DEPEND="
@@ -30,7 +30,7 @@ BDEPEND="
"
LLVM_COMPONENTS=( compiler-rt cmake llvm/cmake )
-LLVM_TEST_COMPONENTS=( llvm/include/llvm/TargetParser )
+LLVM_PATCHSET=${PV/_/-}
llvm.org_set_globals
python_check_deps() {
@@ -46,31 +46,28 @@ pkg_pretend() {
}
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=()
+ # Darwin Prefix builds do not have llvm installed yet, so rely on
+ # bootstrap-prefix to set the appropriate path vars to LLVM instead
+ # of using llvm_pkg_setup.
+ if [[ ${CHOST} != *-darwin* ]] || has_version sys-devel/llvm; then
+ LLVM_MAX_SLOT=${LLVM_MAJOR} llvm_pkg_setup
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() {
- 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}/${P}_build
- if use clang && ! is_crosspkg; then
+ 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
@@ -81,7 +78,7 @@ src_configure() {
strip-unsupported-flags
fi
- if ! is_crosspkg && ! test_compiler ; then
+ if ! test_compiler; then
local nolib_flags=( -nodefaultlibs -lc )
if test_compiler "${nolib_flags[@]}"; then
@@ -90,7 +87,7 @@ src_configure() {
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 )
+ nolib_flags+=( -nostartfiles -emain )
local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
ewarn "${CC} seems to lack runtime, trying with
${nolib_flags[*]}"
@@ -98,10 +95,10 @@ src_configure() {
fi
local mycmakeargs=(
-
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${LLVM_MAJOR}"
+
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${LLVM_VERSION}"
+ -DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF
-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
@@ -112,33 +109,13 @@ src_configure() {
-DPython3_EXECUTABLE="${PYTHON}"
)
- if use amd64 && ! target_is_not_host; then
+ if use amd64; 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
diff --git a/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
b/sys-libs/compiler-rt/compiler-rt-16.0.6-r6.ebuild
similarity index 87%
copy from sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
copy to sys-libs/compiler-rt/compiler-rt-16.0.6-r6.ebuild
index 7642499a8792..e43bba60aa8b 100644
--- a/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
+++ b/sys-libs/compiler-rt/compiler-rt-16.0.6-r6.ebuild
@@ -3,16 +3,16 @@
EAPI=8
-PYTHON_COMPAT=( python3_{10..13} )
-inherit cmake crossdev flag-o-matic llvm.org llvm-utils python-any-r1
-inherit toolchain-funcs
+PYTHON_COMPAT=( python3_{10..12} )
+inherit cmake crossdev flag-o-matic llvm llvm.org python-any-r1 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 +clang +debug test"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86 ~amd64-linux
~arm64-macos ~ppc-macos ~x64-macos"
+IUSE="+abi_x86_32 abi_x86_64 +clang debug test"
RESTRICT="!test? ( test ) !clang? ( test )"
DEPEND="
@@ -30,7 +30,7 @@ BDEPEND="
"
LLVM_COMPONENTS=( compiler-rt cmake llvm/cmake )
-LLVM_TEST_COMPONENTS=( llvm/include/llvm/TargetParser )
+LLVM_PATCHSET=${PV}-r4
llvm.org_set_globals
python_check_deps() {
@@ -46,6 +46,13 @@ pkg_pretend() {
}
pkg_setup() {
+ # Darwin Prefix builds do not have llvm installed yet, so rely on
+ # bootstrap-prefix to set the appropriate path vars to LLVM instead
+ # of using llvm_pkg_setup.
+ if [[ ${CHOST} != *-darwin* ]] || has_version sys-devel/llvm; then
+ LLVM_MAX_SLOT=${LLVM_MAJOR} llvm_pkg_setup
+ fi
+
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
@@ -62,8 +69,6 @@ test_compiler() {
}
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"
@@ -90,7 +95,7 @@ src_configure() {
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 )
+ nolib_flags+=( -nostartfiles -emain )
local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
ewarn "${CC} seems to lack runtime, trying with
${nolib_flags[*]}"
@@ -100,8 +105,8 @@ src_configure() {
local mycmakeargs=(
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${LLVM_MAJOR}"
+ -DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF
-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
diff --git a/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
b/sys-libs/compiler-rt/compiler-rt-17.0.6-r2.ebuild
similarity index 87%
copy from sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
copy to sys-libs/compiler-rt/compiler-rt-17.0.6-r2.ebuild
index 7642499a8792..c5c7bdc62a1b 100644
--- a/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
+++ b/sys-libs/compiler-rt/compiler-rt-17.0.6-r2.ebuild
@@ -3,16 +3,16 @@
EAPI=8
-PYTHON_COMPAT=( python3_{10..13} )
-inherit cmake crossdev flag-o-matic llvm.org llvm-utils python-any-r1
-inherit toolchain-funcs
+PYTHON_COMPAT=( python3_{10..12} )
+inherit cmake crossdev flag-o-matic llvm llvm.org python-any-r1 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 +clang +debug test"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86 ~amd64-linux
~arm64-macos ~ppc-macos ~x64-macos"
+IUSE="+abi_x86_32 abi_x86_64 +clang debug test"
RESTRICT="!test? ( test ) !clang? ( test )"
DEPEND="
@@ -30,7 +30,7 @@ BDEPEND="
"
LLVM_COMPONENTS=( compiler-rt cmake llvm/cmake )
-LLVM_TEST_COMPONENTS=( llvm/include/llvm/TargetParser )
+LLVM_PATCHSET=${PV}
llvm.org_set_globals
python_check_deps() {
@@ -46,6 +46,13 @@ pkg_pretend() {
}
pkg_setup() {
+ # Darwin Prefix builds do not have llvm installed yet, so rely on
+ # bootstrap-prefix to set the appropriate path vars to LLVM instead
+ # of using llvm_pkg_setup.
+ if [[ ${CHOST} != *-darwin* ]] || has_version sys-devel/llvm; then
+ LLVM_MAX_SLOT=${LLVM_MAJOR} llvm_pkg_setup
+ fi
+
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
@@ -62,8 +69,6 @@ test_compiler() {
}
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"
@@ -90,7 +95,7 @@ src_configure() {
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 )
+ nolib_flags+=( -nostartfiles -emain )
local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
ewarn "${CC} seems to lack runtime, trying with
${nolib_flags[*]}"
@@ -100,8 +105,8 @@ src_configure() {
local mycmakeargs=(
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${LLVM_MAJOR}"
+ -DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF
-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
diff --git a/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
b/sys-libs/compiler-rt/compiler-rt-18.1.8-r2.ebuild
similarity index 96%
copy from sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
copy to sys-libs/compiler-rt/compiler-rt-18.1.8-r2.ebuild
index 7642499a8792..6fae972ab61d 100644
--- a/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
+++ b/sys-libs/compiler-rt/compiler-rt-18.1.8-r2.ebuild
@@ -12,7 +12,8 @@ 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"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~x86 ~amd64-linux
~arm64-macos ~ppc-macos ~x64-macos"
+IUSE="+abi_x86_32 abi_x86_64 +clang debug test"
RESTRICT="!test? ( test ) !clang? ( test )"
DEPEND="
@@ -30,7 +31,6 @@ BDEPEND="
"
LLVM_COMPONENTS=( compiler-rt cmake llvm/cmake )
-LLVM_TEST_COMPONENTS=( llvm/include/llvm/TargetParser )
llvm.org_set_globals
python_check_deps() {
@@ -100,8 +100,8 @@ src_configure() {
local mycmakeargs=(
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${LLVM_MAJOR}"
+ -DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF
-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
diff --git a/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
b/sys-libs/compiler-rt/compiler-rt-19.1.3-r1.ebuild
similarity index 96%
copy from sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
copy to sys-libs/compiler-rt/compiler-rt-19.1.3-r1.ebuild
index 7642499a8792..0e331798f968 100644
--- a/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
+++ b/sys-libs/compiler-rt/compiler-rt-19.1.3-r1.ebuild
@@ -12,7 +12,8 @@ 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"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~x86 ~amd64-linux
~arm64-macos ~ppc-macos ~x64-macos"
+IUSE="+abi_x86_32 abi_x86_64 +clang debug test"
RESTRICT="!test? ( test ) !clang? ( test )"
DEPEND="
@@ -100,6 +101,7 @@ src_configure() {
local mycmakeargs=(
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${LLVM_MAJOR}"
+ -DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF
-DCOMPILER_RT_INCLUDE_TESTS=$(usex test)
-DCOMPILER_RT_BUILD_CTX_PROFILE=OFF
-DCOMPILER_RT_BUILD_LIBFUZZER=OFF
diff --git a/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
b/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
index 7642499a8792..e8c984678e90 100644
--- a/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
+++ b/sys-libs/compiler-rt/compiler-rt-20.0.0.9999.ebuild
@@ -100,6 +100,7 @@ src_configure() {
local mycmakeargs=(
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${LLVM_MAJOR}"
+ -DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF
-DCOMPILER_RT_INCLUDE_TESTS=$(usex test)
-DCOMPILER_RT_BUILD_CTX_PROFILE=OFF
-DCOMPILER_RT_BUILD_LIBFUZZER=OFF