summaryrefslogtreecommitdiff
path: root/sys-devel/clang
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2020-06-21 17:50:24 +0100
committerV3n3RiX <venerix@redcorelinux.org>2020-06-21 17:50:24 +0100
commitfeb0daf81d888e9160f9f94502de09b66f2a63fd (patch)
treeb6e5c40ce2abef3da27ed50a023153f475e0ddef /sys-devel/clang
parent9452a6e87b6c2c70513bc47a2470bf9f1168920e (diff)
gentoo resync : 21.06.2020
Diffstat (limited to 'sys-devel/clang')
-rw-r--r--sys-devel/clang/Manifest8
-rw-r--r--sys-devel/clang/clang-10.0.1.9999.ebuild61
-rw-r--r--sys-devel/clang/clang-10.0.1_rc1.ebuild61
-rw-r--r--sys-devel/clang/clang-11.0.0.9999.ebuild51
-rw-r--r--sys-devel/clang/files/10.0.1/0003-clang-tools-extra-Prevent-linking-to-duplicate-.a-li.patch788
-rw-r--r--sys-devel/clang/files/10.0.1/0004-clang-Avoid-linking-c-index-test-to-duplicate-librar.patch29
6 files changed, 929 insertions, 69 deletions
diff --git a/sys-devel/clang/Manifest b/sys-devel/clang/Manifest
index f6a8e0939ec4..d8c57d0b49f6 100644
--- a/sys-devel/clang/Manifest
+++ b/sys-devel/clang/Manifest
@@ -1,3 +1,5 @@
+AUX 10.0.1/0003-clang-tools-extra-Prevent-linking-to-duplicate-.a-li.patch 23184 BLAKE2B 42bfc9401bceea6627703f7611aafe4708e4e745e47e8caa01fb8c7126524ef65e4c135cfd0541bc663bfc52fa8c47342f7f8de462abe283ec353b068d2e3532 SHA512 9561c9ab6dc62257b7626f7898afa667401522817ec57137641f8687549b0b8e531659a5afd5226dd7619126cc67f68235f628cbe639345277415343c4ca3650
+AUX 10.0.1/0004-clang-Avoid-linking-c-index-test-to-duplicate-librar.patch 970 BLAKE2B 564394bea7e9d5a056e7ce39b3e5261f1214637084c1669d34e4d9c3296582732765654ccc2dd76507df2d7fb8406da4185339134fa52bb5c38a2335a55b4f50 SHA512 41050092b31b2558b2d24665f4b5b5bde8b7d50b979c21d57c6e59119dcfa95c3616b873214a8e986268a20436c0895b702547adeb44d6d7576c89de1ba2d587
AUX 8.0.1/darwin_prefix-include-paths.patch 690 BLAKE2B cfb96eb259fb7d557d215be08ea3babcae6dc1353171fad7f297f787d476d28768c7c1bbe6efc7404ea638f1dc6b4b36e1c17e141faf82be623bbd96d5e09118 SHA512 5f8ecabaf43853964bffeb3953b205bea7e8928fd53637d01842723ac8344e19cc639f6f06c199f2be88b73e60b6eab1987bc5ee7dfeaea5e710eacab90f3533
DIST cfe-8.0.1.src.tar.xz 12810056 BLAKE2B 88cee0b6daa477ca0473c76efc45beb634f6194ecd3f45aaec3791e26b203c5dbd33c649435e0d97924096a72c727d76915bffc0b7ea305f24d5e5f06389c4a0 SHA512 1227b2d32052c70b4b494659849000188fce46fc31a71f3352ba8457ac0b0b17e4bc7c8589874c8586d55aa808ee6c1fceb7df501aafa33599f8df7bfd2b791d
DIST clang-tools-extra-8.0.1.src.tar.xz 1994068 BLAKE2B 7d312c1a958d9c5b24515067cbb1db3a92b34cdf77c2345c08ef2f327d2ae4ca7f05252d72ede6569e25cda34225963a8d415cc64279e39d542449ba56eae9c9 SHA512 d39962c30ee9d8a1679d8007009b48dea2c8aaeb283bed781a9e22a1a57b8186c2cfe058da046658882ace1c84a30ddf9b4cb75bce988891189e8423b6c6a72c
@@ -9,9 +11,9 @@ DIST llvmorg-10.0.0.tar.gz 120804856 BLAKE2B 6b0254f5b913398cdcf2b2ec1ff21988870
DIST llvmorg-10.0.1-rc1.tar.gz 120834583 BLAKE2B 64244ebcb6f2c171c9f606e5eb0adff2794f06c9312a0ca627fb79c107c0c898ac242cf4e92523c3265fa717322601d7e3f4d178515fac95d03ee92312082b06 SHA512 f877f66046969a4055b166ad50ef876a9c8ecaf03e2cdd7c8e1a3348eb5f5180f222fa457b1f090a6660282a0d9f7a1d39cf09a04abe0dde0a6e1e10ccf15597
DIST llvmorg-9.0.1.tar.gz 113193320 BLAKE2B b86e405f2b8e00436045fd409fe19cdde75c797b1192c62a22b5ec75e6b4dc8e874a0f33008dc31562445e4cbe53a992b6f48c684255a6a1ef261e595b8b161f SHA512 fa88beeaae94b6d0cd9b5ba38658d0ffed8004035d7d8a4f95c3d31a709b88b581ae9bd7761333c8e5375c44b8f6be01768b5a3be901163159d7e6c43b71da59
EBUILD clang-10.0.0.ebuild 10194 BLAKE2B b7fdf307bd1df5fb9b4a1b74ce54852293d884396004f23011aa30d0f53cc740d554fe2fa723939b826c34b3b0797242d16eeaac0eb4465f09142005b0213f26 SHA512 7187998e91d5239e4824c6ecce16dddadff571a0e75f50ca7f0766ff77dd842f6fec3be06a2bd5859d0e56fae2bb58136b1114d1d5dad37e2bdad23e1956d9a7
-EBUILD clang-10.0.1.9999.ebuild 10940 BLAKE2B 5203158d0a05a7063d581478d60fd43442b1395c4a16b115331132df2296cf792ddaf382aa79f99cd981703678e1e02c271d925bfc8fa3b509a1984948fce347 SHA512 5776f771d5a7539e79f0762228c646a5e57120bff3215a230204329ac7d3727c0dc6a2918a8e5a87503a4aa189cf71892261372905bd50bced05133e361f5865
-EBUILD clang-10.0.1_rc1.ebuild 10937 BLAKE2B a92db7c198d9ede332815bf89f35aa5aaed1c3c64a9fcc48a30cdaf80bb34aab5250ff05478a503d3dd8b1a0e1d060e89d3f94f31e34c2eed7795cc48530fcd2 SHA512 2ee8f66034c4da4f0a330da1984283149fc829215071707eba5cfdee34dde9e310f8aa524480b0ced31ad5b230b81065137e45827236d44e3a0e20dac9b12e94
-EBUILD clang-11.0.0.9999.ebuild 11090 BLAKE2B 7d1395a8c2d83ca9abd0d4ac700cc47c641feafb13dbed786691a191d7ec0ca4f014bba76d0042680c583ec0b8f8f06b51000c2c6f26b8ec8aab1c4607279e03 SHA512 6a25f9a1434622ae7854c97ca702c8955b7a5f27ff2ecd768c5acc6701bb982dd29c83ce870c0c4802c2d17ddd415e8eb4941bf995a28d5793795e8811516da8
+EBUILD clang-10.0.1.9999.ebuild 11297 BLAKE2B 2b50b01407f06e4ec5ae9f8988b8627d9f7ab1d57f102066c1353644fc76fec0d56d077f257d247ff3caee9ff9d2cf6d918a2ba8cda8079dbed84387c0590efa SHA512 ac7c8ac07d020de89fb68137d705231d0af649da541374a3bd9869786b3f090ef9b3d159769819d2d83acf833e3e1fff7006280b74876b499d0de1ae9769919f
+EBUILD clang-10.0.1_rc1.ebuild 11294 BLAKE2B 0df40a2e087631aa266f7d39acc00eb723ac97546ba66733c01fb88f170d5ff83fb4c769a74c06ca0e048ad8c643434e913796f6b592f139ee44f07890b85a13 SHA512 ff52706ed43701df53ed5686b1ed070a5275fee808340378cebfb521ae989f9811f7fff73dbc224c33d6d2004e4c57ac6c3ff5a583750b0546aeeb5e30942b15
+EBUILD clang-11.0.0.9999.ebuild 11124 BLAKE2B 3193fa1a9d5db4e998a28153d43553509b5c503d38b8c1e89ba346f5325e5fd78696be11129ec11523bb3a4a9f9edca362d2711449985cef49e2cd3d50e6a775 SHA512 a34ba7aeb4a6010326dad5e44ab2819a1125c5a7e6076ca60ab5e4efc86c15f5a1f99af325691f84fcced76220c32b372b0c8b3cd13a2780c33db3104f982a01
EBUILD clang-8.0.1.ebuild 10138 BLAKE2B a2c91918e468c3f070ba10d7a0478e006c5d23289db387d6ca57ee082a7567ef24ad7af66a3b93e0e8934c69fbcd5a4fefbfbd77ba0ef077776b4110b30a6773 SHA512 da86670ee496b2a1bfe3f99eb7146cd8a85d793f580ae2ebd94bfb65363c6e39c58fb77b3b00c27e5d9bdc70ecb1688154e500506525b019da3f95d356f815e1
EBUILD clang-9.0.1.ebuild 8982 BLAKE2B 05319c777c4ecfd03a54bc9e14f322ad6f348a99554ebf8eb1e3a0a1b8c7aba5f3ba618fd3edb21022dd34f1cd4dca2c3f24b152b6f795b939a77c8959d27fa1 SHA512 f88f6c0dc7f1faed0f0d8310c9235a4d0d17352f710f28d9a8c7e47e28aaa43f7727e3e2a7e30334ffae7cb2e6df7769a543fd4c79a0ecb8a1f0a480b15fdb06
MISC metadata.xml 1377 BLAKE2B 8b580be2bcaddb98c2d2b8defd1730c69a7478248f7d241dd00f533d36d750a3f45c1e55161a4fd2731b6211a22c658046cf8ad5a87028c32928dfe0cd4a862f SHA512 b08ea2bd3454abb09abfa92b62e6dae4f4e10db0266c1e4895bef0f6a2d2fadea0b36b9b861831389413e1cca0e3c412b4cf474fc8c4170902b40deeab06686a
diff --git a/sys-devel/clang/clang-10.0.1.9999.ebuild b/sys-devel/clang/clang-10.0.1.9999.ebuild
index 6f913045c092..8db3efe5b94a 100644
--- a/sys-devel/clang/clang-10.0.1.9999.ebuild
+++ b/sys-devel/clang/clang-10.0.1.9999.ebuild
@@ -3,8 +3,8 @@
EAPI=7
-PYTHON_COMPAT=( python3_{6,7,8} )
-inherit cmake-utils llvm llvm.org multilib-minimal multiprocessing \
+PYTHON_COMPAT=( python3_{6..9} )
+inherit cmake llvm llvm.org multilib-minimal multiprocessing \
pax-utils python-single-r1 toolchain-funcs
DESCRIPTION="C language family frontend for LLVM"
@@ -15,8 +15,6 @@ LLVM_TEST_COMPONENTS=(
llvm/utils/{lit,llvm-lit,unittest}
)
llvm.org_set_globals
-# We need extra level of indirection for CLANG_RESOURCE_DIR
-S=${WORKDIR}/x/y/clang
# Keep in sync with sys-devel/llvm
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC AVR VE )
@@ -45,7 +43,7 @@ RDEPEND="
${PYTHON_DEPS}"
DEPEND="${RDEPEND}"
BDEPEND="
- doc? ( dev-python/sphinx )
+ dev-python/sphinx
xml? ( virtual/pkgconfig )
${PYTHON_DEPS}"
RDEPEND="${RDEPEND}
@@ -71,17 +69,28 @@ CMAKE_BUILD_TYPE=RelWithDebInfo
# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need
# multilib clang* libraries (not runtime, not wrappers).
+PATCHES=(
+ # fix simultaneous linking to .a and dylib
+ "${FILESDIR}"/10.0.1/0003-clang-tools-extra-Prevent-linking-to-duplicate-.a-li.patch
+ "${FILESDIR}"/10.0.1/0004-clang-Avoid-linking-c-index-test-to-duplicate-librar.patch
+)
+
pkg_setup() {
LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup
python-single-r1_pkg_setup
}
-src_unpack() {
- # create extra parent dir for CLANG_RESOURCE_DIR
+src_prepare() {
+ # create extra parent dir for relative CLANG_RESOURCE_DIR access
mkdir -p x/y || die
- cd x/y || die
- llvm.org_src_unpack
- mv clang-tools-extra clang/tools/extra || die
+ BUILD_DIR=${WORKDIR}/x/y/clang
+
+ # cmake eclasses suck by forcing ${S} here
+ CMAKE_USE_DIR=${S} \
+ S=${WORKDIR} \
+ cmake_src_prepare
+
+ mv ../clang-tools-extra tools/extra || die
}
check_distribution_components() {
@@ -106,6 +115,14 @@ check_distribution_components() {
clang*|findAllSymbols)
continue
;;
+ # headers for clang-tidy static library
+ clang-tidy-headers)
+ continue
+ ;;
+ # conditional to USE=doc
+ docs-clang-html|docs-clang-tools-html)
+ continue
+ ;;
esac
all_targets+=( "${l}" )
@@ -184,13 +201,15 @@ get_distribution_components() {
find-all-symbols
modularize
pp-trace
+
+ # manpages
+ docs-clang-man
+ docs-clang-tools-man
)
use doc && out+=(
docs-clang-html
- docs-clang-man
docs-clang-tools-html
- docs-clang-tools-man
)
use static-analyzer && out+=(
@@ -239,7 +258,7 @@ multilib_src_configure() {
-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
)
use test && mycmakeargs+=(
- -DLLVM_MAIN_SRC_DIR="${WORKDIR}/x/y/llvm"
+ -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
-DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}"
)
@@ -247,10 +266,8 @@ multilib_src_configure() {
mycmakeargs+=(
# normally copied from LLVM_INCLUDE_DOCS but the latter
# is lacking value in stand-alone builds
- -DCLANG_INCLUDE_DOCS=$(usex doc)
- -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=$(usex doc)
- )
- use doc && mycmakeargs+=(
+ -DCLANG_INCLUDE_DOCS=ON
+ -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=ON
-DLLVM_BUILD_DOCS=ON
-DLLVM_ENABLE_SPHINX=ON
-DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
@@ -280,13 +297,13 @@ multilib_src_configure() {
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
- cmake-utils_src_configure
+ cmake_src_configure
multilib_is_native_abi && check_distribution_components
}
multilib_src_compile() {
- cmake-utils_src_compile
+ cmake_src_compile
# provide a symlink for tests
if [[ ! -L ${WORKDIR}/lib/clang ]]; then
@@ -298,9 +315,9 @@ multilib_src_compile() {
multilib_src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
- cmake-utils_src_make check-clang
+ cmake_build check-clang
multilib_is_native_abi &&
- cmake-utils_src_make check-clang-tools check-clangd
+ cmake_build check-clang-tools check-clangd
}
src_install() {
@@ -356,7 +373,7 @@ src_install() {
}
multilib_src_install() {
- DESTDIR=${D} cmake-utils_src_make install-distribution
+ DESTDIR=${D} cmake_build install-distribution
# move headers to /usr/include for wrapping & ABI mismatch checks
# (also drop the version suffix from runtime headers)
diff --git a/sys-devel/clang/clang-10.0.1_rc1.ebuild b/sys-devel/clang/clang-10.0.1_rc1.ebuild
index 13d42251a431..bc6d83f42a8d 100644
--- a/sys-devel/clang/clang-10.0.1_rc1.ebuild
+++ b/sys-devel/clang/clang-10.0.1_rc1.ebuild
@@ -3,8 +3,8 @@
EAPI=7
-PYTHON_COMPAT=( python3_{6,7,8} )
-inherit cmake-utils llvm llvm.org multilib-minimal multiprocessing \
+PYTHON_COMPAT=( python3_{6..9} )
+inherit cmake llvm llvm.org multilib-minimal multiprocessing \
pax-utils python-single-r1 toolchain-funcs
DESCRIPTION="C language family frontend for LLVM"
@@ -15,8 +15,6 @@ LLVM_TEST_COMPONENTS=(
llvm/utils/{lit,llvm-lit,unittest}
)
llvm.org_set_globals
-# We need extra level of indirection for CLANG_RESOURCE_DIR
-S=${WORKDIR}/x/y/clang
# Keep in sync with sys-devel/llvm
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC AVR )
@@ -45,7 +43,7 @@ RDEPEND="
${PYTHON_DEPS}"
DEPEND="${RDEPEND}"
BDEPEND="
- doc? ( dev-python/sphinx )
+ dev-python/sphinx
xml? ( virtual/pkgconfig )
${PYTHON_DEPS}"
RDEPEND="${RDEPEND}
@@ -71,17 +69,28 @@ CMAKE_BUILD_TYPE=RelWithDebInfo
# Therefore: use sys-devel/clang[${MULTILIB_USEDEP}] only if you need
# multilib clang* libraries (not runtime, not wrappers).
+PATCHES=(
+ # fix simultaneous linking to .a and dylib
+ "${FILESDIR}"/10.0.1/0003-clang-tools-extra-Prevent-linking-to-duplicate-.a-li.patch
+ "${FILESDIR}"/10.0.1/0004-clang-Avoid-linking-c-index-test-to-duplicate-librar.patch
+)
+
pkg_setup() {
LLVM_MAX_SLOT=${SLOT} llvm_pkg_setup
python-single-r1_pkg_setup
}
-src_unpack() {
- # create extra parent dir for CLANG_RESOURCE_DIR
+src_prepare() {
+ # create extra parent dir for relative CLANG_RESOURCE_DIR access
mkdir -p x/y || die
- cd x/y || die
- llvm.org_src_unpack
- mv clang-tools-extra clang/tools/extra || die
+ BUILD_DIR=${WORKDIR}/x/y/clang
+
+ # cmake eclasses suck by forcing ${S} here
+ CMAKE_USE_DIR=${S} \
+ S=${WORKDIR} \
+ cmake_src_prepare
+
+ mv ../clang-tools-extra tools/extra || die
}
check_distribution_components() {
@@ -106,6 +115,14 @@ check_distribution_components() {
clang*|findAllSymbols)
continue
;;
+ # headers for clang-tidy static library
+ clang-tidy-headers)
+ continue
+ ;;
+ # conditional to USE=doc
+ docs-clang-html|docs-clang-tools-html)
+ continue
+ ;;
esac
all_targets+=( "${l}" )
@@ -184,13 +201,15 @@ get_distribution_components() {
find-all-symbols
modularize
pp-trace
+
+ # manpages
+ docs-clang-man
+ docs-clang-tools-man
)
use doc && out+=(
docs-clang-html
- docs-clang-man
docs-clang-tools-html
- docs-clang-tools-man
)
use static-analyzer && out+=(
@@ -239,7 +258,7 @@ multilib_src_configure() {
-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
)
use test && mycmakeargs+=(
- -DLLVM_MAIN_SRC_DIR="${WORKDIR}/x/y/llvm"
+ -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
-DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}"
)
@@ -247,10 +266,8 @@ multilib_src_configure() {
mycmakeargs+=(
# normally copied from LLVM_INCLUDE_DOCS but the latter
# is lacking value in stand-alone builds
- -DCLANG_INCLUDE_DOCS=$(usex doc)
- -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=$(usex doc)
- )
- use doc && mycmakeargs+=(
+ -DCLANG_INCLUDE_DOCS=ON
+ -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=ON
-DLLVM_BUILD_DOCS=ON
-DLLVM_ENABLE_SPHINX=ON
-DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
@@ -280,13 +297,13 @@ multilib_src_configure() {
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
- cmake-utils_src_configure
+ cmake_src_configure
multilib_is_native_abi && check_distribution_components
}
multilib_src_compile() {
- cmake-utils_src_compile
+ cmake_src_compile
# provide a symlink for tests
if [[ ! -L ${WORKDIR}/lib/clang ]]; then
@@ -298,9 +315,9 @@ multilib_src_compile() {
multilib_src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
- cmake-utils_src_make check-clang
+ cmake_build check-clang
multilib_is_native_abi &&
- cmake-utils_src_make check-clang-tools check-clangd
+ cmake_build check-clang-tools check-clangd
}
src_install() {
@@ -356,7 +373,7 @@ src_install() {
}
multilib_src_install() {
- DESTDIR=${D} cmake-utils_src_make install-distribution
+ DESTDIR=${D} cmake_build install-distribution
# move headers to /usr/include for wrapping & ABI mismatch checks
# (also drop the version suffix from runtime headers)
diff --git a/sys-devel/clang/clang-11.0.0.9999.ebuild b/sys-devel/clang/clang-11.0.0.9999.ebuild
index 714dc5bb8c4c..76c40cb71042 100644
--- a/sys-devel/clang/clang-11.0.0.9999.ebuild
+++ b/sys-devel/clang/clang-11.0.0.9999.ebuild
@@ -3,8 +3,8 @@
EAPI=7
-PYTHON_COMPAT=( python3_{6,7,8} )
-inherit cmake-utils llvm llvm.org multilib-minimal multiprocessing \
+PYTHON_COMPAT=( python3_{6..9} )
+inherit cmake llvm llvm.org multilib-minimal multiprocessing \
pax-utils python-single-r1 toolchain-funcs
DESCRIPTION="C language family frontend for LLVM"
@@ -16,8 +16,6 @@ LLVM_TEST_COMPONENTS=(
llvm/utils/{UpdateTestChecks,update_cc_test_checks.py}
)
llvm.org_set_globals
-# We need extra level of indirection for CLANG_RESOURCE_DIR
-S=${WORKDIR}/x/y/clang
# Keep in sync with sys-devel/llvm
ALL_LLVM_EXPERIMENTAL_TARGETS=( ARC VE )
@@ -46,7 +44,7 @@ RDEPEND="
${PYTHON_DEPS}"
DEPEND="${RDEPEND}"
BDEPEND="
- doc? ( dev-python/sphinx )
+ dev-python/sphinx
xml? ( virtual/pkgconfig )
${PYTHON_DEPS}"
RDEPEND="${RDEPEND}
@@ -77,12 +75,17 @@ pkg_setup() {
python-single-r1_pkg_setup
}
-src_unpack() {
- # create extra parent dir for CLANG_RESOURCE_DIR
+src_prepare() {
+ # create extra parent dir for relative CLANG_RESOURCE_DIR access
mkdir -p x/y || die
- cd x/y || die
- llvm.org_src_unpack
- mv clang-tools-extra clang/tools/extra || die
+ BUILD_DIR=${WORKDIR}/x/y/clang
+
+ # cmake eclasses suck by forcing ${S} here
+ CMAKE_USE_DIR=${S} \
+ S=${WORKDIR} \
+ cmake_src_prepare
+
+ mv ../clang-tools-extra tools/extra || die
}
check_distribution_components() {
@@ -111,6 +114,10 @@ check_distribution_components() {
clang-tidy-headers)
continue
;;
+ # conditional to USE=doc
+ docs-clang-html|docs-clang-tools-html)
+ continue
+ ;;
esac
all_targets+=( "${l}" )
@@ -189,13 +196,15 @@ get_distribution_components() {
find-all-symbols
modularize
pp-trace
+
+ # manpages
+ docs-clang-man
+ docs-clang-tools-man
)
use doc && out+=(
docs-clang-html
- docs-clang-man
docs-clang-tools-html
- docs-clang-tools-man
)
use static-analyzer && out+=(
@@ -244,7 +253,7 @@ multilib_src_configure() {
-DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
)
use test && mycmakeargs+=(
- -DLLVM_MAIN_SRC_DIR="${WORKDIR}/x/y/llvm"
+ -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
-DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}"
)
@@ -252,10 +261,8 @@ multilib_src_configure() {
mycmakeargs+=(
# normally copied from LLVM_INCLUDE_DOCS but the latter
# is lacking value in stand-alone builds
- -DCLANG_INCLUDE_DOCS=$(usex doc)
- -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=$(usex doc)
- )
- use doc && mycmakeargs+=(
+ -DCLANG_INCLUDE_DOCS=ON
+ -DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=ON
-DLLVM_BUILD_DOCS=ON
-DLLVM_ENABLE_SPHINX=ON
-DCLANG_INSTALL_SPHINX_HTML_DIR="${EPREFIX}/usr/share/doc/${PF}/html"
@@ -285,13 +292,13 @@ multilib_src_configure() {
# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
- cmake-utils_src_configure
+ cmake_src_configure
multilib_is_native_abi && check_distribution_components
}
multilib_src_compile() {
- cmake-utils_src_compile
+ cmake_src_compile
# provide a symlink for tests
if [[ ! -L ${WORKDIR}/lib/clang ]]; then
@@ -303,9 +310,9 @@ multilib_src_compile() {
multilib_src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
- cmake-utils_src_make check-clang
+ cmake_build check-clang
multilib_is_native_abi &&
- cmake-utils_src_make check-clang-tools check-clangd
+ cmake_build check-clang-tools check-clangd
}
src_install() {
@@ -361,7 +368,7 @@ src_install() {
}
multilib_src_install() {
- DESTDIR=${D} cmake-utils_src_make install-distribution
+ DESTDIR=${D} cmake_build install-distribution
# move headers to /usr/include for wrapping & ABI mismatch checks
# (also drop the version suffix from runtime headers)
diff --git a/sys-devel/clang/files/10.0.1/0003-clang-tools-extra-Prevent-linking-to-duplicate-.a-li.patch b/sys-devel/clang/files/10.0.1/0003-clang-tools-extra-Prevent-linking-to-duplicate-.a-li.patch
new file mode 100644
index 000000000000..d01bd5d51e23
--- /dev/null
+++ b/sys-devel/clang/files/10.0.1/0003-clang-tools-extra-Prevent-linking-to-duplicate-.a-li.patch
@@ -0,0 +1,788 @@
+From 248d706ca72666a203a24b84406be430ccf40558 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Tue, 16 Jun 2020 20:43:55 +0200
+Subject: [PATCH 3/4] [clang-tools-extra] Prevent linking to duplicate .a libs
+ and dylib
+
+Fix various tool libraries not to link to clang's .a libraries and dylib
+simultaneously. This may cause breakage, in particular through
+duplicate command-line option declarations.
+---
+ .../clang-apply-replacements/CMakeLists.txt | 4 +++-
+ .../clang-change-namespace/CMakeLists.txt | 4 +++-
+ clang-tools-extra/clang-doc/CMakeLists.txt | 4 +++-
+ .../clang-include-fixer/CMakeLists.txt | 6 +++++-
+ .../find-all-symbols/CMakeLists.txt | 4 +++-
+ clang-tools-extra/clang-move/CMakeLists.txt | 4 +++-
+ clang-tools-extra/clang-query/CMakeLists.txt | 4 +++-
+ .../clang-reorder-fields/CMakeLists.txt | 4 +++-
+ clang-tools-extra/clang-tidy/CMakeLists.txt | 7 +++++--
+ clang-tools-extra/clang-tidy/abseil/CMakeLists.txt | 8 ++++++--
+ .../clang-tidy/android/CMakeLists.txt | 8 ++++++--
+ clang-tools-extra/clang-tidy/boost/CMakeLists.txt | 8 ++++++--
+ .../clang-tidy/bugprone/CMakeLists.txt | 10 +++++++---
+ clang-tools-extra/clang-tidy/cert/CMakeLists.txt | 12 ++++++++----
+ .../clang-tidy/cppcoreguidelines/CMakeLists.txt | 14 +++++++++-----
+ clang-tools-extra/clang-tidy/darwin/CMakeLists.txt | 8 ++++++--
+ .../clang-tidy/fuchsia/CMakeLists.txt | 10 +++++++---
+ clang-tools-extra/clang-tidy/google/CMakeLists.txt | 10 +++++++---
+ clang-tools-extra/clang-tidy/hicpp/CMakeLists.txt | 14 +++++++++-----
+ .../clang-tidy/linuxkernel/CMakeLists.txt | 8 ++++++--
+ clang-tools-extra/clang-tidy/llvm/CMakeLists.txt | 10 +++++++---
+ clang-tools-extra/clang-tidy/misc/CMakeLists.txt | 8 ++++++--
+ .../clang-tidy/modernize/CMakeLists.txt | 10 +++++++---
+ clang-tools-extra/clang-tidy/mpi/CMakeLists.txt | 8 ++++++--
+ clang-tools-extra/clang-tidy/objc/CMakeLists.txt | 8 ++++++--
+ clang-tools-extra/clang-tidy/openmp/CMakeLists.txt | 8 ++++++--
+ .../clang-tidy/performance/CMakeLists.txt | 8 ++++++--
+ clang-tools-extra/clang-tidy/plugin/CMakeLists.txt | 8 ++++++--
+ .../clang-tidy/portability/CMakeLists.txt | 8 ++++++--
+ .../clang-tidy/readability/CMakeLists.txt | 8 ++++++--
+ clang-tools-extra/clang-tidy/utils/CMakeLists.txt | 6 +++++-
+ clang-tools-extra/clang-tidy/zircon/CMakeLists.txt | 8 ++++++--
+ clang-tools-extra/clangd/CMakeLists.txt | 11 +++++++----
+ clang-tools-extra/clangd/unittests/CMakeLists.txt | 1 -
+ 34 files changed, 188 insertions(+), 73 deletions(-)
+
+diff --git a/clang-tools-extra/clang-apply-replacements/CMakeLists.txt b/clang-tools-extra/clang-apply-replacements/CMakeLists.txt
+index 5bfdcb487e1..27383b488e4 100644
+--- a/clang-tools-extra/clang-apply-replacements/CMakeLists.txt
++++ b/clang-tools-extra/clang-apply-replacements/CMakeLists.txt
+@@ -4,8 +4,10 @@ set(LLVM_LINK_COMPONENTS
+
+ add_clang_library(clangApplyReplacements
+ lib/Tooling/ApplyReplacements.cpp
++)
+
+- LINK_LIBS
++clang_target_link_libraries(clangApplyReplacements
++ PRIVATE
+ clangAST
+ clangBasic
+ clangRewrite
+diff --git a/clang-tools-extra/clang-change-namespace/CMakeLists.txt b/clang-tools-extra/clang-change-namespace/CMakeLists.txt
+index 178306423eb..dccfd7c0673 100644
+--- a/clang-tools-extra/clang-change-namespace/CMakeLists.txt
++++ b/clang-tools-extra/clang-change-namespace/CMakeLists.txt
+@@ -4,8 +4,10 @@ set(LLVM_LINK_COMPONENTS
+
+ add_clang_library(clangChangeNamespace
+ ChangeNamespace.cpp
++)
+
+- LINK_LIBS
++clang_target_link_libraries(clangChangeNamespace
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+diff --git a/clang-tools-extra/clang-doc/CMakeLists.txt b/clang-tools-extra/clang-doc/CMakeLists.txt
+index c301ad5afac..6f303a67c9a 100644
+--- a/clang-tools-extra/clang-doc/CMakeLists.txt
++++ b/clang-tools-extra/clang-doc/CMakeLists.txt
+@@ -14,8 +14,10 @@ add_clang_library(clangDoc
+ Representation.cpp
+ Serialize.cpp
+ YAMLGenerator.cpp
++)
+
+- LINK_LIBS
++clang_target_link_libraries(clangDoc
++ PRIVATE
+ clangAnalysis
+ clangAST
+ clangASTMatchers
+diff --git a/clang-tools-extra/clang-include-fixer/CMakeLists.txt b/clang-tools-extra/clang-include-fixer/CMakeLists.txt
+index f27f7403ea6..d8685cb2075 100644
+--- a/clang-tools-extra/clang-include-fixer/CMakeLists.txt
++++ b/clang-tools-extra/clang-include-fixer/CMakeLists.txt
+@@ -11,6 +11,11 @@ add_clang_library(clangIncludeFixer
+ YamlSymbolIndex.cpp
+
+ LINK_LIBS
++ findAllSymbols
++ )
++
++clang_target_link_libraries(clangIncludeFixer
++ PRIVATE
+ clangAST
+ clangBasic
+ clangFormat
+@@ -21,7 +26,6 @@ add_clang_library(clangIncludeFixer
+ clangSerialization
+ clangTooling
+ clangToolingCore
+- findAllSymbols
+ )
+
+ add_subdirectory(plugin)
+diff --git a/clang-tools-extra/clang-include-fixer/find-all-symbols/CMakeLists.txt b/clang-tools-extra/clang-include-fixer/find-all-symbols/CMakeLists.txt
+index c5fe19bfdbd..06a2324e918 100644
+--- a/clang-tools-extra/clang-include-fixer/find-all-symbols/CMakeLists.txt
++++ b/clang-tools-extra/clang-include-fixer/find-all-symbols/CMakeLists.txt
+@@ -11,8 +11,10 @@ add_clang_library(findAllSymbols
+ PragmaCommentHandler.cpp
+ STLPostfixHeaderMap.cpp
+ SymbolInfo.cpp
++ )
+
+- LINK_LIBS
++clang_target_link_libraries(findAllSymbols
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+diff --git a/clang-tools-extra/clang-move/CMakeLists.txt b/clang-tools-extra/clang-move/CMakeLists.txt
+index c63127ea325..9ea409932da 100644
+--- a/clang-tools-extra/clang-move/CMakeLists.txt
++++ b/clang-tools-extra/clang-move/CMakeLists.txt
+@@ -5,8 +5,10 @@ set(LLVM_LINK_COMPONENTS
+ add_clang_library(clangMove
+ Move.cpp
+ HelperDeclRefGraph.cpp
++ )
+
+- LINK_LIBS
++clang_target_link_libraries(clangMove
++ PRIVATE
+ clangAnalysis
+ clangAST
+ clangASTMatchers
+diff --git a/clang-tools-extra/clang-query/CMakeLists.txt b/clang-tools-extra/clang-query/CMakeLists.txt
+index d1d68d502e3..bc76bae9c0e 100644
+--- a/clang-tools-extra/clang-query/CMakeLists.txt
++++ b/clang-tools-extra/clang-query/CMakeLists.txt
+@@ -6,8 +6,10 @@ set(LLVM_LINK_COMPONENTS
+ add_clang_library(clangQuery
+ Query.cpp
+ QueryParser.cpp
++ )
+
+- LINK_LIBS
++clang_target_link_libraries(clangQuery
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+diff --git a/clang-tools-extra/clang-reorder-fields/CMakeLists.txt b/clang-tools-extra/clang-reorder-fields/CMakeLists.txt
+index 9c75d785cc9..e555fd5cdf0 100644
+--- a/clang-tools-extra/clang-reorder-fields/CMakeLists.txt
++++ b/clang-tools-extra/clang-reorder-fields/CMakeLists.txt
+@@ -2,8 +2,10 @@ set(LLVM_LINK_COMPONENTS support)
+
+ add_clang_library(clangReorderFields
+ ReorderFieldsAction.cpp
++)
+
+- LINK_LIBS
++clang_target_link_libraries(clangReorderFields
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+diff --git a/clang-tools-extra/clang-tidy/CMakeLists.txt b/clang-tools-extra/clang-tidy/CMakeLists.txt
+index 6dadb271771..329df19f331 100644
+--- a/clang-tools-extra/clang-tidy/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/CMakeLists.txt
+@@ -14,8 +14,10 @@ add_clang_library(clangTidy
+
+ DEPENDS
+ ClangSACheckers
++ )
+
+- LINK_LIBS
++clang_target_link_libraries(clangTidy
++ PRIVATE
+ clangAnalysis
+ clangAST
+ clangASTMatchers
+@@ -31,7 +33,8 @@ add_clang_library(clangTidy
+ )
+
+ if(CLANG_ENABLE_STATIC_ANALYZER)
+- target_link_libraries(clangTidy PRIVATE
++ clang_target_link_libraries(clangTidy
++ PRIVATE
+ clangStaticAnalyzerCore
+ clangStaticAnalyzerFrontend
+ )
+diff --git a/clang-tools-extra/clang-tidy/abseil/CMakeLists.txt b/clang-tools-extra/clang-tidy/abseil/CMakeLists.txt
+index 3f88da6233f..0f040e56a05 100644
+--- a/clang-tools-extra/clang-tidy/abseil/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/abseil/CMakeLists.txt
+@@ -22,11 +22,15 @@ add_clang_library(clangTidyAbseilModule
+ UpgradeDurationConversionsCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyAbseilModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyUtils
+ clangTooling
+ )
+diff --git a/clang-tools-extra/clang-tidy/android/CMakeLists.txt b/clang-tools-extra/clang-tidy/android/CMakeLists.txt
+index 9d04003d9bb..d29adc610c8 100644
+--- a/clang-tools-extra/clang-tidy/android/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/android/CMakeLists.txt
+@@ -20,10 +20,14 @@ add_clang_library(clangTidyAndroidModule
+ ComparisonInTempFailureRetryCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyAndroidModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyUtils
+ )
+diff --git a/clang-tools-extra/clang-tidy/boost/CMakeLists.txt b/clang-tools-extra/clang-tidy/boost/CMakeLists.txt
+index 059f6e91eca..481a709600c 100644
+--- a/clang-tools-extra/clang-tidy/boost/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/boost/CMakeLists.txt
+@@ -5,10 +5,14 @@ add_clang_library(clangTidyBoostModule
+ UseToStringCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyBoostModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyUtils
+ )
+diff --git a/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt b/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt
+index 2cb28f4e8f1..d664f5eb875 100644
+--- a/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/bugprone/CMakeLists.txt
+@@ -52,13 +52,17 @@ add_clang_library(clangTidyBugproneModule
+ VirtualNearMissCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyCppCoreGuidelinesModule
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyBugproneModule
++ PRIVATE
+ clangAnalysis
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyCppCoreGuidelinesModule
+- clangTidyUtils
+ clangTooling
+ )
+diff --git a/clang-tools-extra/clang-tidy/cert/CMakeLists.txt b/clang-tools-extra/clang-tidy/cert/CMakeLists.txt
+index 66ea2a13acd..75a13349f2f 100644
+--- a/clang-tools-extra/clang-tidy/cert/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/cert/CMakeLists.txt
+@@ -17,10 +17,6 @@ add_clang_library(clangTidyCERTModule
+ VariadicFunctionDefCheck.cpp
+
+ LINK_LIBS
+- clangAST
+- clangASTMatchers
+- clangBasic
+- clangLex
+ clangTidy
+ clangTidyBugproneModule
+ clangTidyGoogleModule
+@@ -29,3 +25,11 @@ add_clang_library(clangTidyCERTModule
+ clangTidyReadabilityModule
+ clangTidyUtils
+ )
++
++clang_target_link_libraries(clangTidyCERTModule
++ PRIVATE
++ clangAST
++ clangASTMatchers
++ clangBasic
++ clangLex
++ )
+diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/CMakeLists.txt b/clang-tools-extra/clang-tidy/cppcoreguidelines/CMakeLists.txt
+index 13c15bc9d22..e48bc1c8b1a 100644
+--- a/clang-tools-extra/clang-tidy/cppcoreguidelines/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/CMakeLists.txt
+@@ -23,15 +23,19 @@ add_clang_library(clangTidyCppCoreGuidelinesModule
+ SpecialMemberFunctionsCheck.cpp
+
+ LINK_LIBS
+- clangAST
+- clangASTMatchers
+- clangBasic
+- clangLex
+- clangSerialization
+ clangTidy
+ clangTidyMiscModule
+ clangTidyModernizeModule
+ clangTidyReadabilityModule
+ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyCppCoreGuidelinesModule
++ PRIVATE
++ clangAST
++ clangASTMatchers
++ clangBasic
++ clangLex
++ clangSerialization
+ clangTooling
+ )
+diff --git a/clang-tools-extra/clang-tidy/darwin/CMakeLists.txt b/clang-tools-extra/clang-tidy/darwin/CMakeLists.txt
+index c650efb2a5f..feec79c12bf 100644
+--- a/clang-tools-extra/clang-tidy/darwin/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/darwin/CMakeLists.txt
+@@ -6,11 +6,15 @@ add_clang_library(clangTidyDarwinModule
+ DispatchOnceNonstaticCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyDarwinModule
++ PRIVATE
+ clangAnalysis
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyUtils
+ )
+diff --git a/clang-tools-extra/clang-tidy/fuchsia/CMakeLists.txt b/clang-tools-extra/clang-tidy/fuchsia/CMakeLists.txt
+index 30b319e7e5a..0148b20f364 100644
+--- a/clang-tools-extra/clang-tidy/fuchsia/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/fuchsia/CMakeLists.txt
+@@ -12,11 +12,15 @@ add_clang_library(clangTidyFuchsiaModule
+ VirtualInheritanceCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyGoogleModule
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyFuchsiaModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyGoogleModule
+- clangTidyUtils
+ )
+diff --git a/clang-tools-extra/clang-tidy/google/CMakeLists.txt b/clang-tools-extra/clang-tidy/google/CMakeLists.txt
+index 08368932da5..302561ba646 100644
+--- a/clang-tools-extra/clang-tidy/google/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/google/CMakeLists.txt
+@@ -21,11 +21,15 @@ add_clang_library(clangTidyGoogleModule
+ UsingNamespaceDirectiveCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyReadabilityModule
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyGoogleModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyReadabilityModule
+- clangTidyUtils
+ )
+diff --git a/clang-tools-extra/clang-tidy/hicpp/CMakeLists.txt b/clang-tools-extra/clang-tidy/hicpp/CMakeLists.txt
+index 4cf26767f3d..b4c9eb7a445 100644
+--- a/clang-tools-extra/clang-tidy/hicpp/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/hicpp/CMakeLists.txt
+@@ -8,11 +8,6 @@ add_clang_library(clangTidyHICPPModule
+ SignedBitwiseCheck.cpp
+
+ LINK_LIBS
+- clangAST
+- clangASTMatchers
+- clangBasic
+- clangLex
+- clangSerialization
+ clangTidy
+ clangTidyBugproneModule
+ clangTidyCppCoreGuidelinesModule
+@@ -23,3 +18,12 @@ add_clang_library(clangTidyHICPPModule
+ clangTidyReadabilityModule
+ clangTidyUtils
+ )
++
++clang_target_link_libraries(clangTidyHICPPModule
++ PRIVATE
++ clangAST
++ clangASTMatchers
++ clangBasic
++ clangLex
++ clangSerialization
++ )
+diff --git a/clang-tools-extra/clang-tidy/linuxkernel/CMakeLists.txt b/clang-tools-extra/clang-tidy/linuxkernel/CMakeLists.txt
+index f0e766d30e4..bfcc2ba526d 100644
+--- a/clang-tools-extra/clang-tidy/linuxkernel/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/linuxkernel/CMakeLists.txt
+@@ -5,10 +5,14 @@ add_clang_library(clangTidyLinuxKernelModule
+ MustCheckErrsCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyLinuxKernelModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyUtils
+ )
+diff --git a/clang-tools-extra/clang-tidy/llvm/CMakeLists.txt b/clang-tools-extra/clang-tidy/llvm/CMakeLists.txt
+index c035596b556..bff128cbba7 100644
+--- a/clang-tools-extra/clang-tidy/llvm/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/llvm/CMakeLists.txt
+@@ -9,12 +9,16 @@ add_clang_library(clangTidyLLVMModule
+ TwineLocalCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyReadabilityModule
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyLLVMModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyReadabilityModule
+- clangTidyUtils
+ clangTooling
+ )
+diff --git a/clang-tools-extra/clang-tidy/misc/CMakeLists.txt b/clang-tools-extra/clang-tidy/misc/CMakeLists.txt
+index 3fc152148d6..37bc2aa5af6 100644
+--- a/clang-tools-extra/clang-tidy/misc/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/misc/CMakeLists.txt
+@@ -17,13 +17,17 @@ add_clang_library(clangTidyMiscModule
+ UnusedUsingDeclsCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyMiscModule
++ PRIVATE
+ clangAnalysis
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+ clangSerialization
+- clangTidy
+- clangTidyUtils
+ clangTooling
+ )
+diff --git a/clang-tools-extra/clang-tidy/modernize/CMakeLists.txt b/clang-tools-extra/clang-tidy/modernize/CMakeLists.txt
+index 36193f0a6d1..162f44568c5 100644
+--- a/clang-tools-extra/clang-tidy/modernize/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/modernize/CMakeLists.txt
+@@ -36,12 +36,16 @@ add_clang_library(clangTidyModernizeModule
+ UseUsingCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyReadabilityModule
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyModernizeModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyReadabilityModule
+- clangTidyUtils
+ clangTooling
+ )
+diff --git a/clang-tools-extra/clang-tidy/mpi/CMakeLists.txt b/clang-tools-extra/clang-tidy/mpi/CMakeLists.txt
+index 5be7b36550a..b36767ac7f3 100644
+--- a/clang-tools-extra/clang-tidy/mpi/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/mpi/CMakeLists.txt
+@@ -6,13 +6,17 @@ add_clang_library(clangTidyMPIModule
+ TypeMismatchCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyMPIModule
++ PRIVATE
+ clangAnalysis
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyUtils
+ clangTooling
+ clangStaticAnalyzerCheckers
+ )
+diff --git a/clang-tools-extra/clang-tidy/objc/CMakeLists.txt b/clang-tools-extra/clang-tidy/objc/CMakeLists.txt
+index 68dda6530f7..3624d2f3ef0 100644
+--- a/clang-tools-extra/clang-tidy/objc/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/objc/CMakeLists.txt
+@@ -9,10 +9,14 @@ add_clang_library(clangTidyObjCModule
+ SuperSelfCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyObjCModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyUtils
+ )
+diff --git a/clang-tools-extra/clang-tidy/openmp/CMakeLists.txt b/clang-tools-extra/clang-tidy/openmp/CMakeLists.txt
+index af95704fd44..d182b29f366 100644
+--- a/clang-tools-extra/clang-tidy/openmp/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/openmp/CMakeLists.txt
+@@ -8,9 +8,13 @@ add_clang_library(clangTidyOpenMPModule
+ UseDefaultNoneCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyOpenMPModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+- clangTidy
+- clangTidyUtils
+ )
+diff --git a/clang-tools-extra/clang-tidy/performance/CMakeLists.txt b/clang-tools-extra/clang-tidy/performance/CMakeLists.txt
+index d1f9897b015..c9a7e262124 100644
+--- a/clang-tools-extra/clang-tidy/performance/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/performance/CMakeLists.txt
+@@ -18,11 +18,15 @@ add_clang_library(clangTidyPerformanceModule
+ UnnecessaryValueParamCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyPerformanceModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangAnalysis
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyUtils
+ )
+diff --git a/clang-tools-extra/clang-tidy/plugin/CMakeLists.txt b/clang-tools-extra/clang-tidy/plugin/CMakeLists.txt
+index 4adc3f26977..0bfe122314e 100644
+--- a/clang-tools-extra/clang-tidy/plugin/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/plugin/CMakeLists.txt
+@@ -2,12 +2,16 @@ add_clang_library(clangTidyPlugin
+ ClangTidyPlugin.cpp
+
+ LINK_LIBS
++ clangTidy
++ ${ALL_CLANG_TIDY_CHECKS}
++ )
++
++clang_target_link_libraries(clangTidyPlugin
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangFrontend
+ clangSema
+- clangTidy
+ clangTooling
+- ${ALL_CLANG_TIDY_CHECKS}
+ )
+diff --git a/clang-tools-extra/clang-tidy/portability/CMakeLists.txt b/clang-tools-extra/clang-tidy/portability/CMakeLists.txt
+index 0420a18a2a6..bbe9ccbef1f 100644
+--- a/clang-tools-extra/clang-tidy/portability/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/portability/CMakeLists.txt
+@@ -5,11 +5,15 @@ add_clang_library(clangTidyPortabilityModule
+ SIMDIntrinsicsCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyPortabilityModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyUtils
+ clangTooling
+ )
+diff --git a/clang-tools-extra/clang-tidy/readability/CMakeLists.txt b/clang-tools-extra/clang-tidy/readability/CMakeLists.txt
+index 97144af06ca..5af900db5fd 100644
+--- a/clang-tools-extra/clang-tidy/readability/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/readability/CMakeLists.txt
+@@ -41,11 +41,15 @@ add_clang_library(clangTidyReadabilityModule
+ UppercaseLiteralSuffixCheck.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyReadabilityModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyUtils
+ clangTooling
+ )
+diff --git a/clang-tools-extra/clang-tidy/utils/CMakeLists.txt b/clang-tools-extra/clang-tidy/utils/CMakeLists.txt
+index fc383a318b9..5c837ca79aa 100644
+--- a/clang-tools-extra/clang-tidy/utils/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/utils/CMakeLists.txt
+@@ -18,11 +18,15 @@ add_clang_library(clangTidyUtils
+ UsingInserter.cpp
+
+ LINK_LIBS
++ clangTidy
++ )
++
++clang_target_link_libraries(clangTidyUtils
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+ clangSema
+- clangTidy
+ clangTransformer
+ )
+diff --git a/clang-tools-extra/clang-tidy/zircon/CMakeLists.txt b/clang-tools-extra/clang-tidy/zircon/CMakeLists.txt
+index 7aa7cd3f669..71db5e90f25 100644
+--- a/clang-tools-extra/clang-tidy/zircon/CMakeLists.txt
++++ b/clang-tools-extra/clang-tidy/zircon/CMakeLists.txt
+@@ -5,10 +5,14 @@ add_clang_library(clangTidyZirconModule
+ ZirconTidyModule.cpp
+
+ LINK_LIBS
++ clangTidy
++ clangTidyUtils
++ )
++
++clang_target_link_libraries(clangTidyZirconModule
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+ clangLex
+- clangTidy
+- clangTidyUtils
+ )
+diff --git a/clang-tools-extra/clangd/CMakeLists.txt b/clang-tools-extra/clangd/CMakeLists.txt
+index e3eccb50a49..148043ee9df 100644
+--- a/clang-tools-extra/clangd/CMakeLists.txt
++++ b/clang-tools-extra/clangd/CMakeLists.txt
+@@ -110,6 +110,13 @@ add_clang_library(clangDaemon
+ refactor/Tweak.cpp
+
+ LINK_LIBS
++ clangTidy
++ ${LLVM_PTHREAD_LIB}
++ ${ALL_CLANG_TIDY_CHECKS}
++ )
++
++clang_target_link_libraries(clangDaemon
++ PRIVATE
+ clangAST
+ clangASTMatchers
+ clangBasic
+@@ -120,15 +127,11 @@ add_clang_library(clangDaemon
+ clangLex
+ clangSema
+ clangSerialization
+- clangTidy
+ clangTooling
+ clangToolingCore
+ clangToolingInclusions
+ clangToolingRefactoring
+ clangToolingSyntax
+- ${LLVM_PTHREAD_LIB}
+- ${CLANGD_ATOMIC_LIB}
+- ${ALL_CLANG_TIDY_CHECKS}
+ )
+
+ add_subdirectory(refactor/tweaks)
+diff --git a/clang-tools-extra/clangd/unittests/CMakeLists.txt b/clang-tools-extra/clangd/unittests/CMakeLists.txt
+index 62113c6e4bb..6c2b56c93d5 100644
+--- a/clang-tools-extra/clangd/unittests/CMakeLists.txt
++++ b/clang-tools-extra/clangd/unittests/CMakeLists.txt
+@@ -103,7 +103,6 @@ target_link_libraries(ClangdTests
+ PRIVATE
+ clangDaemon
+ clangTidy
+- LLVMSupport
+ LLVMTestingSupport
+ )
+
+--
+2.27.0
+
diff --git a/sys-devel/clang/files/10.0.1/0004-clang-Avoid-linking-c-index-test-to-duplicate-librar.patch b/sys-devel/clang/files/10.0.1/0004-clang-Avoid-linking-c-index-test-to-duplicate-librar.patch
new file mode 100644
index 000000000000..74b569ca4117
--- /dev/null
+++ b/sys-devel/clang/files/10.0.1/0004-clang-Avoid-linking-c-index-test-to-duplicate-librar.patch
@@ -0,0 +1,29 @@
+From e0df57328dd084d38ea4aac0cfb129fc320eae3f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Fri, 19 Jun 2020 17:00:12 +0200
+Subject: [PATCH 4/4] [clang] Avoid linking c-index-test to duplicate libraries
+
+Use clang_target_link_libraries() to link libraries included
+in clang-cpp.so to avoid simultaneously linking to it and to split
+static libraries. This prevents units from being included twice.
+---
+ clang/tools/c-index-test/CMakeLists.txt | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/clang/tools/c-index-test/CMakeLists.txt b/clang/tools/c-index-test/CMakeLists.txt
+index ceef4b08637..d83d1091936 100644
+--- a/clang/tools/c-index-test/CMakeLists.txt
++++ b/clang/tools/c-index-test/CMakeLists.txt
+@@ -25,6 +25,9 @@ else()
+ target_link_libraries(c-index-test
+ PRIVATE
+ libclang
++ )
++ clang_target_link_libraries(c-index-test
++ PRIVATE
+ clangAST
+ clangBasic
+ clangCodeGen
+--
+2.27.0
+