diff options
Diffstat (limited to 'sys-libs/libcxxabi/libcxxabi-6.0.9999.ebuild')
-rw-r--r-- | sys-libs/libcxxabi/libcxxabi-6.0.9999.ebuild | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/sys-libs/libcxxabi/libcxxabi-6.0.9999.ebuild b/sys-libs/libcxxabi/libcxxabi-6.0.9999.ebuild index b9675a9e147f..32451233234f 100644 --- a/sys-libs/libcxxabi/libcxxabi-6.0.9999.ebuild +++ b/sys-libs/libcxxabi/libcxxabi-6.0.9999.ebuild @@ -20,7 +20,7 @@ EGIT_BRANCH="release_60" LICENSE="|| ( UoI-NCSA MIT )" SLOT="0" KEYWORDS="" -IUSE="+libunwind +static-libs test" +IUSE="+libunwind +static-libs test elibc_musl" RESTRICT="!test? ( test )" RDEPEND=" @@ -34,7 +34,6 @@ RDEPEND=" DEPEND="${RDEPEND} >=sys-devel/llvm-6 test? ( >=sys-devel/clang-3.9.0 - ~sys-libs/libcxx-${PV}[libcxxabi(-)] $(python_gen_any_dep 'dev-python/lit[${PYTHON_USEDEP}]') )" # least intrusive of all @@ -56,7 +55,7 @@ src_unpack() { git-r3_fetch git-r3_checkout https://llvm.org/git/libcxx.git \ - "${WORKDIR}"/libcxx '' include utils/libcxx + "${WORKDIR}"/libcxx '' git-r3_checkout } @@ -75,19 +74,44 @@ multilib_src_configure() { -DLIBCXXABI_LIBUNWIND_INCLUDES="${EPREFIX}"/usr/include ) if use test; then + local clang_path=$(type -P "${CHOST:+${CHOST}-}clang" 2>/dev/null) + local jobs=${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")} + + [[ -n ${clang_path} ]] || die "Unable to find ${CHOST}-clang for tests" + mycmakeargs+=( -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" - -DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}" + -DLLVM_LIT_ARGS="-vv;-j;${jobs};--param=cxx_under_test=${clang_path}" ) fi cmake-utils_src_configure } -multilib_src_test() { - local clang_path=$(type -P "${CHOST:+${CHOST}-}clang" 2>/dev/null) +build_libcxx() { + local -x LDFLAGS="${LDFLAGS} -L${BUILD_DIR}/$(get_libdir)" + local CMAKE_USE_DIR=${WORKDIR}/libcxx + local BUILD_DIR=${BUILD_DIR}/libcxx + local mycmakeargs=( + -DLIBCXX_LIBDIR_SUFFIX= + -DLIBCXX_ENABLE_SHARED=ON + -DLIBCXX_ENABLE_STATIC=OFF + -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF + -DLIBCXX_CXX_ABI=libcxxabi + -DLIBCXX_CXX_ABI_INCLUDE_PATHS="${S}"/include + -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF + -DLIBCXX_HAS_MUSL_LIBC=$(usex elibc_musl) + -DLIBCXX_HAS_GCC_S_LIB=OFF + -DLIBCXX_INCLUDE_TESTS=OFF + ) - [[ -n ${clang_path} ]] || die "Unable to find ${CHOST}-clang for tests" - sed -i -e "/cxx_under_test/s^\".*\"^\"${clang_path}\"^" test/lit.site.cfg || die + cmake-utils_src_configure + cmake-utils_src_compile +} + +multilib_src_test() { + # build a local copy of libc++ for testing to avoid circular dep + build_libcxx + mv "${BUILD_DIR}"/libcxx/lib/libc++* "${BUILD_DIR}/$(get_libdir)/" || die cmake-utils_src_make check-libcxxabi } |