Skip to content

Commit

Permalink
sys-libs/compiler-rt: Prefer building using clang
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
mgorny committed Feb 16, 2017
1 parent 50a9892 commit 04bb278
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 4 deletions.
10 changes: 8 additions & 2 deletions sys-libs/compiler-rt/compiler-rt-4.0.0_rc2.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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[*]}"
Expand Down
11 changes: 9 additions & 2 deletions sys-libs/compiler-rt/compiler-rt-9999.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -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}"

Expand All @@ -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[*]}"
Expand Down
4 changes: 4 additions & 0 deletions sys-libs/compiler-rt/metadata.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>

0 comments on commit 04bb278

Please sign in to comment.