commit:     04bb278e03b7a36b5a5682c77355c68aee632e78
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Feb 16 13:36:42 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Feb 16 14:16:21 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=04bb278e

sys-libs/compiler-rt: Prefer building using clang

Add a USE=clang flag to prefer building using installed clang, to work
around limited/broken support for '#pragma redefine_extname' which
results in incomplete runtime being emitted when building using GCC.

 sys-libs/compiler-rt/compiler-rt-4.0.0_rc2.ebuild | 10 ++++++++--
 sys-libs/compiler-rt/compiler-rt-9999.ebuild      | 11 +++++++++--
 sys-libs/compiler-rt/metadata.xml                 |  4 ++++
 3 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/sys-libs/compiler-rt/compiler-rt-4.0.0_rc2.ebuild 
b/sys-libs/compiler-rt/compiler-rt-4.0.0_rc2.ebuild
index 43560c2edd..82b3dcffe1 100644
--- a/sys-libs/compiler-rt/compiler-rt-4.0.0_rc2.ebuild
+++ b/sys-libs/compiler-rt/compiler-rt-4.0.0_rc2.ebuild
@@ -19,7 +19,7 @@ 
SRC_URI="http://www.llvm.org/pre-releases/${PV/_//}/${P/_/}.src.tar.xz";
 LICENSE="|| ( UoI-NCSA MIT )"
 SLOT="${PV%_*}"
 KEYWORDS="~amd64 ~arm64 ~x86"
-IUSE="test"
+IUSE="+clang test"
 
 LLVM_SLOT=${SLOT%%.*}
 RDEPEND="!=sys-libs/compiler-rt-${SLOT}*:0"
@@ -43,7 +43,13 @@ src_configure() {
        # pre-set since we need to pass it to cmake
        BUILD_DIR=${WORKDIR}/${P}_build
 
-       if ! test_compiler; then
+       if use clang; then
+               local -x CC=${CHOST}-clang
+               local -x CXX=${CHOST}-clang++
+               # ensure we can use clang before installing compiler-rt
+               local -x LDFLAGS="${LDFLAGS} -nodefaultlibs -lc"
+               strip-unsupported-flags
+       elif ! test_compiler; then
                local extra_flags=( -nodefaultlibs -lc )
                if test_compiler "${extra_flags[@]}"; then
                        local -x LDFLAGS="${LDFLAGS} ${extra_flags[*]}"

diff --git a/sys-libs/compiler-rt/compiler-rt-9999.ebuild 
b/sys-libs/compiler-rt/compiler-rt-9999.ebuild
index 450177ae5c..034b1d2531 100644
--- a/sys-libs/compiler-rt/compiler-rt-9999.ebuild
+++ b/sys-libs/compiler-rt/compiler-rt-9999.ebuild
@@ -22,12 +22,13 @@ LICENSE="|| ( UoI-NCSA MIT )"
 # Note: this needs to be updated to match version of clang-9999
 SLOT="5.0.0"
 KEYWORDS=""
-IUSE="test"
+IUSE="+clang test"
 
 LLVM_SLOT=${SLOT%%.*}
 # llvm-4 needed for --cmakedir
 DEPEND="
        >=sys-devel/llvm-4
+       clang? ( sys-devel/clang )
        test? ( =sys-devel/clang-${PV%_*}*:${LLVM_SLOT} )
        ${PYTHON_DEPS}"
 
@@ -43,7 +44,13 @@ src_configure() {
        # pre-set since we need to pass it to cmake
        BUILD_DIR=${WORKDIR}/${P}_build
 
-       if ! test_compiler; then
+       if use clang; then
+               local -x CC=${CHOST}-clang
+               local -x CXX=${CHOST}-clang++
+               # ensure we can use clang before installing compiler-rt
+               local -x LDFLAGS="${LDFLAGS} -nodefaultlibs -lc"
+               strip-unsupported-flags
+       elif ! test_compiler; then
                local extra_flags=( -nodefaultlibs -lc )
                if test_compiler "${extra_flags[@]}"; then
                        local -x LDFLAGS="${LDFLAGS} ${extra_flags[*]}"

diff --git a/sys-libs/compiler-rt/metadata.xml 
b/sys-libs/compiler-rt/metadata.xml
index 89c4bdb960..3b99602138 100644
--- a/sys-libs/compiler-rt/metadata.xml
+++ b/sys-libs/compiler-rt/metadata.xml
@@ -4,4 +4,8 @@
        <maintainer type="project">
                <email>[email protected]</email>
        </maintainer>
+       <use>
+               <flag name='clang'>Force building using installed clang (rather
+                       than the default CC/CXX).</flag>
+       </use>
 </pkgmetadata>

Reply via email to