[dev-db/mongodb] allow clang on gcc profile

This commit is contained in:
Robert Förster 2024-09-08 03:51:44 +02:00
parent 62b49ec482
commit b360af06a9
2 changed files with 96 additions and 20 deletions

View File

@ -45,6 +45,7 @@ RDEPEND="acct-group/mongodb
>=sys-libs/zlib-1.2.12:= >=sys-libs/zlib-1.2.12:=
clang? ( clang? (
$(llvm_gen_dep " $(llvm_gen_dep "
sys-devel/clang:\${LLVM_SLOT}
sys-devel/llvm:\${LLVM_SLOT} sys-devel/llvm:\${LLVM_SLOT}
") ")
) )
@ -117,9 +118,8 @@ pkg_pretend() {
pkg_setup() { pkg_setup() {
python-any-r1_pkg_setup python-any-r1_pkg_setup
if tc-is-clang; then if use clang; then
llvm-r1_pkg_setup llvm-r1_pkg_setup
llvm_fix_tool_path CC CXX
fi fi
} }
@ -139,11 +139,6 @@ src_configure() {
# --use-system-tcmalloc is strongly NOT recommended: # --use-system-tcmalloc is strongly NOT recommended:
# for MONGO_GIT_HASH use GitOrigin-RevId from the commit of the tag # for MONGO_GIT_HASH use GitOrigin-RevId from the commit of the tag
scons_opts=( scons_opts=(
AR="$(tc-getAR)"
CC="$(tc-getCC)"
CXX="$(tc-getCXX)"
CCFLAGS="${CXXFLAGS}"
VERBOSE=1 VERBOSE=1
VARIANT_DIR=gentoo VARIANT_DIR=gentoo
MONGO_VERSION="${PV}" MONGO_VERSION="${PV}"
@ -161,6 +156,49 @@ src_configure() {
--use-system-zstd --use-system-zstd
) )
local have_switched_compiler=
if use clang; then
# Force clang
local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }')
[[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}")
[[ -z ${version_clang} ]] && die "Failed to read clang version!"
if tc-is-gcc; then
have_switched_compiler=yes
fi
AR=llvm-ar
CC=${CHOST}-clang-${version_clang}
CXX=${CHOST}-clang++-${version_clang}
scons_opts+=(
AR="$(get_llvm_prefix)/bin/${AR}"
CC="$(get_llvm_prefix)/bin/${CC}"
CXX="$(get_llvm_prefix)/bin/${CXX}"
)
elif ! use clang && ! tc-is-gcc ; then
# Force gcc
have_switched_compiler=yes
AR=gcc-ar
CC=${CHOST}-gcc
CXX=${CHOST}-g++
scons_opts+=(
AR="${AR}"
CC="${CC}"
CXX="${CXX}"
)
fi
if [[ -n "${have_switched_compiler}" ]] ; then
# Because we switched active compiler we have to ensure
# that no unsupported flags are set
strip-unsupported-flags
scons_opts+=(
CCFLAGS="${CXXFLAGS}"
)
fi
use arm64 && scons_opts+=( --use-hardware-crc32=off ) # Bug 701300 use arm64 && scons_opts+=( --use-hardware-crc32=off ) # Bug 701300
use amd64 && scons_opts+=( --experimental-optimization=-sandybridge ) # Bug 890294 use amd64 && scons_opts+=( --experimental-optimization=-sandybridge ) # Bug 890294
use debug && scons_opts+=( --dbg=on ) use debug && scons_opts+=( --dbg=on )

View File

@ -46,6 +46,7 @@ RDEPEND="acct-group/mongodb
>=sys-libs/zlib-1.2.12:= >=sys-libs/zlib-1.2.12:=
clang? ( clang? (
$(llvm_gen_dep " $(llvm_gen_dep "
sys-devel/clang:\${LLVM_SLOT}
sys-devel/llvm:\${LLVM_SLOT} sys-devel/llvm:\${LLVM_SLOT}
") ")
) )
@ -96,14 +97,6 @@ python_check_deps() {
python_has_version -b "dev-python/typing-extensions[${PYTHON_USEDEP}]" python_has_version -b "dev-python/typing-extensions[${PYTHON_USEDEP}]"
} }
pkg_setup() {
python-any-r1_pkg_setup
if tc-is-clang; then
llvm-r1_pkg_setup
llvm_fix_tool_path CC CXX
fi
}
pkg_pretend() { pkg_pretend() {
# Bug 809692 + 890294 # Bug 809692 + 890294
if use amd64 && ! use cpu_flags_x86_avx; then if use amd64 && ! use cpu_flags_x86_avx; then
@ -124,6 +117,13 @@ pkg_pretend() {
fi fi
} }
pkg_setup() {
python-any-r1_pkg_setup
if use clang; then
llvm-r1_pkg_setup
fi
}
src_prepare() { src_prepare() {
default default
@ -140,11 +140,6 @@ src_configure() {
# --use-system-tcmalloc is strongly NOT recommended: # --use-system-tcmalloc is strongly NOT recommended:
# for MONGO_GIT_HASH use GitOrigin-RevId from the commit of the tag # for MONGO_GIT_HASH use GitOrigin-RevId from the commit of the tag
scons_opts=( scons_opts=(
AR="$(tc-getAR)"
CC="$(tc-getCC)"
CXX="$(tc-getCXX)"
CCFLAGS="${CXXFLAGS}"
VERBOSE=1 VERBOSE=1
VARIANT_DIR=gentoo VARIANT_DIR=gentoo
MONGO_VERSION="${PV}" MONGO_VERSION="${PV}"
@ -162,6 +157,49 @@ src_configure() {
--use-system-zstd --use-system-zstd
) )
local have_switched_compiler=
if use clang; then
# Force clang
local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }')
[[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}")
[[ -z ${version_clang} ]] && die "Failed to read clang version!"
if tc-is-gcc; then
have_switched_compiler=yes
fi
AR=llvm-ar
CC=${CHOST}-clang-${version_clang}
CXX=${CHOST}-clang++-${version_clang}
scons_opts+=(
AR="$(get_llvm_prefix)/bin/${AR}"
CC="$(get_llvm_prefix)/bin/${CC}"
CXX="$(get_llvm_prefix)/bin/${CXX}"
)
elif ! use clang && ! tc-is-gcc ; then
# Force gcc
have_switched_compiler=yes
AR=gcc-ar
CC=${CHOST}-gcc
CXX=${CHOST}-g++
scons_opts+=(
AR="${AR}"
CC="${CC}"
CXX="${CXX}"
)
fi
if [[ -n "${have_switched_compiler}" ]] ; then
# Because we switched active compiler we have to ensure
# that no unsupported flags are set
strip-unsupported-flags
scons_opts+=(
CCFLAGS="${CXXFLAGS}"
)
fi
use arm64 && scons_opts+=( --use-hardware-crc32=off ) # Bug 701300 use arm64 && scons_opts+=( --use-hardware-crc32=off ) # Bug 701300
use amd64 && scons_opts+=( --experimental-optimization=-sandybridge ) # Bug 890294 use amd64 && scons_opts+=( --experimental-optimization=-sandybridge ) # Bug 890294
use debug && scons_opts+=( --dbg=on ) use debug && scons_opts+=( --dbg=on )