summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2016-08-31 23:10:12 +0200
committerMichał Górny <mgorny@gentoo.org>2016-08-31 23:11:26 +0200
commitf4fe64524e1c5b5c86a4ab81bbc235b1287c0376 (patch)
treea61b42acdfcf106df6e6ab9d4d326bb63f799452 /sys-libs
parentsys-devel/llvm: Fix llvm-config --obj-root on the live ebuild (diff)
downloadgentoo-f4fe64524e1c5b5c86a4ab81bbc235b1287c0376.tar.gz
gentoo-f4fe64524e1c5b5c86a4ab81bbc235b1287c0376.tar.bz2
gentoo-f4fe64524e1c5b5c86a4ab81bbc235b1287c0376.zip
sys-libs/compiler-rt: Support running tests
Diffstat (limited to 'sys-libs')
-rw-r--r--sys-libs/compiler-rt/compiler-rt-9999.ebuild67
1 files changed, 62 insertions, 5 deletions
diff --git a/sys-libs/compiler-rt/compiler-rt-9999.ebuild b/sys-libs/compiler-rt/compiler-rt-9999.ebuild
index 7c93672c10f7..43363fe8f69b 100644
--- a/sys-libs/compiler-rt/compiler-rt-9999.ebuild
+++ b/sys-libs/compiler-rt/compiler-rt-9999.ebuild
@@ -8,7 +8,7 @@ EAPI=6
CMAKE_MIN_VERSION=3.4.3
PYTHON_COMPAT=( python2_7 )
-inherit cmake-utils git-r3 python-single-r1
+inherit cmake-utils flag-o-matic git-r3 python-single-r1
DESCRIPTION="Compiler runtime libraries for clang"
HOMEPAGE="http://llvm.org/"
@@ -19,31 +19,88 @@ EGIT_REPO_URI="http://llvm.org/git/compiler-rt.git
LICENSE="UoI-NCSA"
SLOT="0/${PV%.*}"
KEYWORDS=""
-IUSE="+sanitize"
+IUSE="+sanitize test"
RDEPEND="
~sys-devel/llvm-${PV}
!<sys-devel/llvm-${PV}
sanitize? ( ${PYTHON_DEPS} )"
DEPEND="${RDEPEND}
+ test? ( ~sys-devel/clang-${PV} )
${PYTHON_DEPS}"
-REQUIRED_USE=${PYTHON_REQUIRED_USE}
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+ test? ( sanitize )"
+
+src_unpack() {
+ if use test; then
+ # needed for patched gtest
+ git-r3_fetch "http://llvm.org/git/llvm.git
+ https://github.com/llvm-mirror/llvm.git"
+ fi
+ git-r3_fetch
+
+ if use test; then
+ git-r3_checkout http://llvm.org/git/llvm.git \
+ "${WORKDIR}"/llvm
+ fi
+ git-r3_checkout
+}
+
+src_prepare() {
+ # Support setting LLVM_MAIN_SRC_DIR and other llvm-config overrides
+ eapply "${FILESDIR}"/9999/0001-compiler-rt-cmake-Support-overriding-llvm-config-que.patch
+
+ default
+}
src_configure() {
+ # pre-set since we need to pass it to cmake
+ BUILD_DIR=${WORKDIR}/${P}_build
+
local clang_version=4.0.0
local libdir=$(get_libdir)
local mycmakeargs=(
# used to find cmake modules
-DLLVM_LIBDIR_SUFFIX="${libdir#lib}"
-DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${clang_version}"
+ # use a build dir structure consistent with install
+ # this makes it possible to easily deploy test-friendly clang
+ -DCOMPILER_RT_OUTPUT_DIR="${BUILD_DIR}/lib/clang/${clang_version}"
- # TODO: tests do not support standalone builds
- -DCOMPILER_RT_INCLUDE_TESTS=OFF
+ -DCOMPILER_RT_INCLUDE_TESTS=$(usex test)
-DCOMPILER_RT_BUILD_SANITIZERS=$(usex sanitize)
)
+ if use test; then
+ mycmakeargs+=(
+ -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm"
+
+ # they are created during src_test()
+ -DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/bin/clang"
+ -DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/bin/clang++"
+ )
+
+ # same flags are passed for build & tests, so we need to strip
+ # them down to a subset supported by clang
+ filter-flags -msahf -frecord-gcc-switches
+ fi
cmake-utils_src_configure
+
+ if use test; then
+ # copy clang over since resource_dir is located relatively to binary
+ # therefore, we can put our new libraries in it
+ mkdir -p "${BUILD_DIR}"/{bin,lib/clang/"${clang_version}"/include} || die
+ cp "${EPREFIX}/usr/bin/clang" "${EPREFIX}/usr/bin/clang++" \
+ "${BUILD_DIR}"/bin/ || die
+ cp "${EPREFIX}/usr/lib/clang/${clang_version}/include"/*.h \
+ "${BUILD_DIR}/lib/clang/${clang_version}/include/" || die
+ fi
+}
+
+src_test() {
+ # TODO: tests are broken by sandbox
+ cmake-utils_src_make check-all
}
src_install() {