sys-libs/compiler-rt: Prefer building using clang
authorMichał Górny <mgorny@gentoo.org>
Thu, 16 Feb 2017 13:36:42 +0000 (14:36 +0100)
committerMichał Górny <mgorny@gentoo.org>
Thu, 16 Feb 2017 14:16:21 +0000 (15:16 +0100)
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
sys-libs/compiler-rt/compiler-rt-9999.ebuild
sys-libs/compiler-rt/metadata.xml

index 43560c2edd59e43cee063b3f8f97f5734a77272f..82b3dcffe19bd4b2c9fc62e7357f46c3df6bffd4 100644 (file)
@@ -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[*]}"
index 450177ae5cf7626f794c994f1c49cbac163d05e8..034b1d253154a3e0d0bb75059af5e2e9e380c8a1 100644 (file)
@@ -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[*]}"
index 89c4bdb96049e6115e6748d08e9e0ce0b5636564..3b996021381aeba90da560b0db5e8c8f50fa0da4 100644 (file)
@@ -4,4 +4,8 @@
        <maintainer type="project">
                <email>llvm@gentoo.org</email>
        </maintainer>
+       <use>
+               <flag name='clang'>Force building using installed clang (rather
+                       than the default CC/CXX).</flag>
+       </use>
 </pkgmetadata>