blob: c799f482ec2d3e6cc324b53959a5b310ff1d5b83 [file] [log] [blame]
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=5
inherit cros-constants cmake-multilib cmake-utils git-2 cros-llvm
DESCRIPTION="C++ runtime stack unwinder from LLVM"
HOMEPAGE="https://github.com/llvm-mirror/libunwind"
SRC_URI=""
EGIT_REPO_URI="${CROS_GIT_HOST_URL}/external/llvm.org/libunwind"
# llvm:353983 https://critique.corp.google.com/#review/233864070
export EGIT_COMMIT="317087cfd8e608bd24e53934d59b5b85e0a9ded6" #r353208
LICENSE="|| ( UoI-NCSA MIT )"
SLOT="0"
KEYWORDS="*"
IUSE="cros_host debug llvm-next +static-libs +shared-libs"
RDEPEND="!${CATEGORY}/libunwind"
DEPEND="${RDEPEND}
cros_host? ( sys-devel/llvm )"
pkg_setup() {
# Setup llvm toolchain for cross-compilation
setup_cross_toolchain
}
src_unpack() {
if use llvm-next; then
# llvm:353983 https://critique.corp.google.com/#review/233864070
export EGIT_COMMIT="317087cfd8e608bd24e53934d59b5b85e0a9ded6" #r353208
fi
git-2_src_unpack
}
pick_cherries() {
local CHERRIES=""
CHERRIES+="2ae4f16e7a3c5b6493b5eddbd76f231f3923eee0"
pushd "${S}" >/dev/null || die
for cherry in ${CHERRIES}; do
epatch "${FILESDIR}/cherry/${cherry}.patch"
done
popd >/dev/null || die
}
pick_next_cherries() {
local CHERRIES=""
CHERRIES+="2ae4f16e7a3c5b6493b5eddbd76f231f3923eee0"
pushd "${S}" >/dev/null || die
for cherry in ${CHERRIES}; do
epatch "${FILESDIR}/cherry/${cherry}.patch"
done
popd >/dev/null || die
}
src_prepare() {
use llvm-next || pick_cherries
use llvm-next && pick_next_cherries
}
multilib_src_configure() {
# Allow targeting non-neon targets for armv7a.
if [[ ${CATEGORY} == cross-armv7a* ]] ; then
append-flags -mfpu=vfpv3
fi
local libdir=$(get_libdir)
local mycmakeargs=(
"${mycmakeargs[@]}"
-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY
-DLLVM_LIBDIR_SUFFIX=${libdir#lib}
-DLIBUNWIND_ENABLE_ASSERTIONS=$(usex debug)
-DLIBUNWIND_ENABLE_STATIC=$(usex static-libs)
-DLIBUNWIND_ENABLE_SHARED=$(usex shared-libs)
-DLIBUNWIND_TARGET_TRIPLE=${CTARGET}
-DLIBUNWIND_ENABLE_THREADS=OFF
-DLIBUNWIND_ENABLE_CROSS_UNWINDING=ON
-DCMAKE_INSTALL_PREFIX=${PREFIX}
# Avoid old libstdc++ errors when bootstrapping.
-DLLVM_ENABLE_LIBCXX=ON
)
cmake-utils_src_configure
}
multilib_src_install() {
cmake-utils_src_install
# Install headers.
insinto "${PREFIX}"/include
doins -r "${S}"/include/.
}