summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-devel/llvm/llvm-9999.ebuild')
-rw-r--r--sys-devel/llvm/llvm-9999.ebuild299
1 files changed, 30 insertions, 269 deletions
diff --git a/sys-devel/llvm/llvm-9999.ebuild b/sys-devel/llvm/llvm-9999.ebuild
index c8a34ba3f9f..556bf076366 100644
--- a/sys-devel/llvm/llvm-9999.ebuild
+++ b/sys-devel/llvm/llvm-9999.ebuild
@@ -6,10 +6,11 @@ EAPI=6
: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
CMAKE_MIN_VERSION=3.4.3
+DISTUTILS_OPTIONAL=1
PYTHON_COMPAT=( python2_7 )
-inherit check-reqs cmake-utils eutils flag-o-matic git-r3 multilib \
- multilib-minimal python-single-r1 toolchain-funcs pax-utils
+inherit check-reqs cmake-utils distutils-r1 flag-o-matic git-r3 \
+ multilib-minimal pax-utils toolchain-funcs
DESCRIPTION="Low Level Virtual Machine"
HOMEPAGE="http://llvm.org/"
@@ -20,17 +21,12 @@ EGIT_REPO_URI="http://llvm.org/git/llvm.git
LICENSE="UoI-NCSA"
SLOT="0/${PV%.*}"
KEYWORDS=""
-IUSE="clang debug default-compiler-rt default-libcxx +doc gold libedit +libffi
- lldb multitarget ncurses ocaml python +sanitize +static-analyzer test xml
- video_cards_radeon elibc_musl kernel_Darwin kernel_FreeBSD"
+IUSE="debug +doc gold libedit +libffi multitarget ncurses ocaml test
+ video_cards_radeon elibc_musl kernel_Darwin"
-COMMON_DEPEND="
+# python is needed for llvm-lit (which is installed)
+RDEPEND="
sys-libs/zlib:0=
- clang? (
- static-analyzer? ( dev-lang/perl:* )
- xml? ( dev-libs/libxml2:2=[${MULTILIB_USEDEP}] )
- ${PYTHON_DEPS}
- )
gold? ( >=sys-devel/binutils-2.22:*[cxx] )
libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
libffi? ( >=virtual/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
@@ -38,51 +34,31 @@ COMMON_DEPEND="
ocaml? (
>=dev-lang/ocaml-4.00.0:0=
dev-ml/findlib
- dev-ml/ocaml-ctypes )"
+ dev-ml/ocaml-ctypes )
+ ${PYTHON_DEPS}"
# configparser-3.2 breaks the build (3.3 or none at all are fine)
-DEPEND="${COMMON_DEPEND}
+DEPEND="${RDEPEND}
dev-lang/perl
- >=sys-devel/make-3.81
- >=sys-devel/flex-2.5.4
- >=sys-devel/bison-1.875d
|| ( >=sys-devel/gcc-3.0 >=sys-devel/llvm-3.5
( >=sys-freebsd/freebsd-lib-9.1-r10 sys-libs/libcxx )
)
|| ( >=sys-devel/binutils-2.18 >=sys-devel/binutils-apple-5.1 )
kernel_Darwin? ( <sys-libs/libcxx-${PV%_rc*}.9999 )
- clang? ( xml? ( virtual/pkgconfig ) )
doc? ( dev-python/sphinx )
gold? ( sys-libs/binutils-libs )
libffi? ( virtual/pkgconfig )
- lldb? ( dev-lang/swig )
- !!<dev-python/configparser-3.3.0.2
ocaml? ( test? ( dev-ml/ounit ) )
- ${PYTHON_DEPS}"
-RDEPEND="${COMMON_DEPEND}
- clang? ( !<=sys-devel/clang-${PV}-r99 )
- default-libcxx? ( sys-libs/libcxx )
- abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r2
- !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] )"
-PDEPEND="clang? ( =sys-devel/clang-${PV}-r100 )"
-
-# pypy gives me around 1700 unresolved tests due to open file limit
-# being exceeded. probably GC does not close them fast enough.
-REQUIRED_USE="${PYTHON_REQUIRED_USE}
- lldb? ( clang xml )"
+ !!<dev-python/configparser-3.3.0.2"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
pkg_pretend() {
# in megs
- # !clang !debug !multitarget -O2 400
- # !clang !debug multitarget -O2 550
- # clang !debug !multitarget -O2 950
- # clang !debug multitarget -O2 1200
- # !clang debug multitarget -O2 5G
- # clang !debug multitarget -O0 -g 12G
- # clang debug multitarget -O2 16G
- # clang debug multitarget -O0 -g 14G
+ # !debug !multitarget -O2 400
+ # !debug multitarget -O2 550
+ # debug multitarget -O2 5G
local build_size=550
- use clang && build_size=1200
if use debug; then
ewarn "USE=debug is known to increase the size of package considerably"
@@ -108,41 +84,10 @@ pkg_pretend() {
pkg_setup() {
pkg_pretend
-
- python-single-r1_pkg_setup
-}
-
-src_unpack() {
- if use clang; then
- git-r3_fetch "http://llvm.org/git/compiler-rt.git
- https://github.com/llvm-mirror/compiler-rt.git"
- git-r3_fetch "http://llvm.org/git/clang.git
- https://github.com/llvm-mirror/clang.git"
- git-r3_fetch "http://llvm.org/git/clang-tools-extra.git
- https://github.com/llvm-mirror/clang-tools-extra.git"
- fi
- if use lldb; then
- git-r3_fetch "http://llvm.org/git/lldb.git
- https://github.com/llvm-mirror/lldb.git"
- fi
- git-r3_fetch
-
- if use clang; then
- git-r3_checkout http://llvm.org/git/compiler-rt.git \
- "${S}"/projects/compiler-rt
- git-r3_checkout http://llvm.org/git/clang.git \
- "${S}"/tools/clang
- git-r3_checkout http://llvm.org/git/clang-tools-extra.git \
- "${S}"/tools/clang/tools/extra
- fi
- if use lldb; then
- git-r3_checkout http://llvm.org/git/lldb.git \
- "${S}"/tools/lldb
- fi
- git-r3_checkout
}
src_prepare() {
+ # Python is needed to run tests using lit
python_setup
# Make ocaml warnings non-fatal, bug #537308
@@ -175,39 +120,17 @@ src_prepare() {
# https://bugs.gentoo.org/show_bug.cgi?id=578392
eapply "${FILESDIR}"/llvm-3.8-soversion.patch
+ # Fix lit tests to find installed llvm-lit correctly
+ eapply "${FILESDIR}"/9999/0009-cmake-Use-system-llvm-lit-when-lit.py-does-not-exist.patch
+ # Install lit as llvm-lit (as expected by cmake)
+ eapply "${FILESDIR}"/9999/0010-lit-setup.py-Install-as-llvm-lit-as-cmake-expects-it.patch
+
# support building llvm against musl-libc
use elibc_musl && eapply "${FILESDIR}"/llvm-3.8-musl-fixes.patch
# disable use of SDK on OSX, bug #568758
sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
- if use clang; then
- # Automatically select active system GCC's libraries, bugs #406163 and #417913
- eapply "${FILESDIR}"/clang-3.5-gentoo-runtime-gcc-detection-v3.patch
-
- # Install clang runtime into /usr/lib/clang
- # https://llvm.org/bugs/show_bug.cgi?id=23792
- eapply "${FILESDIR}"/cmake/clang-0001-Install-clang-runtime-into-usr-lib-without-suffix-3.8.patch
- eapply "${FILESDIR}"/cmake/compiler-rt-3.9-cmake-Install-compiler-rt-into-usr-lib-without-suffi.patch
-
- # Make it possible to override CLANG_LIBDIR_SUFFIX
- # (that is used only to find LLVMgold.so)
- # https://llvm.org/bugs/show_bug.cgi?id=23793
- eapply "${FILESDIR}"/cmake/clang-0002-cmake-Make-CLANG_LIBDIR_SUFFIX-overridable.patch
-
- # Fix WX sections, bug #421527
- find projects/compiler-rt/lib/builtins -type f -name '*.S' -exec sed \
- -e '$a\\n#if defined(__linux__) && defined(__ELF__)\n.section .note.GNU-stack,"",%progbits\n#endif' \
- -i {} + || die
- fi
-
- if use lldb; then
- # Do not install dummy readline.so module from
- # https://llvm.org/bugs/show_bug.cgi?id=18841
- sed -e 's/add_subdirectory(readline)/#&/' \
- -i tools/lldb/scripts/Python/modules/CMakeLists.txt || die
- fi
-
# User patches
eapply_user
@@ -235,7 +158,6 @@ multilib_src_configure() {
-DLLVM_LIBDIR_SUFFIX=${libdir#lib}
-DBUILD_SHARED_LIBS=ON
- -DLLVM_ENABLE_TIMESTAMPS=OFF
-DLLVM_TARGETS_TO_BUILD="${targets}"
-DLLVM_BUILD_TESTS=$(usex test)
@@ -255,31 +177,6 @@ multilib_src_configure() {
-DHAVE_HISTEDIT_H=$(usex libedit)
)
- if use clang; then
- mycmakeargs+=(
- -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=$(usex !xml)
- # libgomp support fails to find headers without explicit -I
- # furthermore, it provides only syntax checking
- -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-
- # override default stdlib and rtlib
- -DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")
- -DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")
-
- # compiler-rt's test cases depend on sanitizer
- -DCOMPILER_RT_BUILD_SANITIZERS=$(usex sanitize)
- -DCOMPILER_RT_INCLUDE_TESTS=$(usex sanitize)
- )
- fi
-
- if use lldb; then
- mycmakeargs+=(
- -DLLDB_DISABLE_LIBEDIT=$(usex !libedit)
- -DLLDB_DISABLE_CURSES=$(usex !ncurses)
- -DLLDB_ENABLE_TERMINFO=$(usex ncurses)
- )
- fi
-
if ! multilib_is_native_abi || ! use ocaml; then
mycmakeargs+=(
-DOCAMLFIND=NO
@@ -303,56 +200,11 @@ multilib_src_configure() {
-DLLVM_INSTALL_UTILS=ON
)
- if use clang; then
- mycmakeargs+=(
- -DCLANG_INSTALL_HTML="${EPREFIX}/usr/share/doc/${PF}/clang"
- )
- fi
-
if use gold; then
mycmakeargs+=(
-DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include
)
fi
-
- if use lldb; then
- mycmakeargs+=(
- -DLLDB_DISABLE_PYTHON=$(usex !python)
- )
- fi
-
- else
- if use clang; then
- mycmakeargs+=(
- # disable compiler-rt on non-native ABI because:
- # 1. it fails to configure because of -m32
- # 2. it is shared between ABIs so no point building
- # it multiple times
- -DLLVM_EXTERNAL_COMPILER_RT_BUILD=OFF
- -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_BUILD=OFF
- )
- fi
- if use lldb; then
- mycmakeargs+=(
- # only run swig on native abi
- -DLLDB_DISABLE_PYTHON=ON
- )
- fi
- fi
-
- if use clang; then
- mycmakeargs+=(
- -DCLANG_ENABLE_ARCMT=$(usex static-analyzer)
- -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer)
- -DCLANG_LIBDIR_SUFFIX="${NATIVE_LIBDIR#lib}"
- )
-
- # -- not needed when compiler-rt is built with host compiler --
- # cmake passes host C*FLAGS to compiler-rt build
- # which is performed using clang, so we need to filter out
- # some flags clang does not support
- # (if you know some more flags that don't work, let us know)
- #filter-flags -msahf -frecord-gcc-switches
fi
if tc-is-cross-compiler; then
@@ -362,14 +214,6 @@ multilib_src_configure() {
-DCMAKE_CROSSCOMPILING=ON
-DLLVM_TABLEGEN=/usr/bin/llvm-tblgen
)
-
- if use clang; then
- [[ -x "/usr/bin/clang-tblgen" ]] \
- || die "/usr/bin/clang-tblgen not found or usable"
- mycmakeargs+=(
- -DCLANG_TABLEGEN=/usr/bin/clang-tblgen
- )
- fi
fi
cmake-utils_src_configure
@@ -389,15 +233,16 @@ multilib_src_compile() {
pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
fi
+
+ # Run setup.py for lit
+ cd "${S}"/utils/lit || die
+ distutils-r1_src_compile
}
multilib_src_test() {
# respect TMPDIR!
local -x LIT_PRESERVES_TMP=1
- local test_targets=( check )
- # clang tests won't work on non-native ABI because we skip compiler-rt
- multilib_is_native_abi && use clang && test_targets+=( check-clang )
- cmake-utils_src_make "${test_targets[@]}"
+ cmake-utils_src_make check
}
src_install() {
@@ -406,34 +251,14 @@ src_install() {
)
local MULTILIB_WRAPPED_HEADERS=(
- /usr/include/llvm/Config/config.h
/usr/include/llvm/Config/llvm-config.h
)
- if use clang; then
- # note: magic applied in multilib_src_install()!
- CLANG_VERSION=4.0
-
- MULTILIB_CHOST_TOOLS+=(
- /usr/bin/clang
- /usr/bin/clang++
- /usr/bin/clang-cl
- /usr/bin/clang-${CLANG_VERSION}
- /usr/bin/clang++-${CLANG_VERSION}
- /usr/bin/clang-cl-${CLANG_VERSION}
- )
-
- MULTILIB_WRAPPED_HEADERS+=(
- /usr/include/clang/Config/config.h
- )
- fi
-
multilib-minimal_src_install
- # Remove unnecessary headers on FreeBSD, bug #417171
- if use kernel_FreeBSD && use clang; then
- rm "${ED}"usr/lib/clang/${PV}/include/{std,float,iso,limits,tgmath,varargs}*.h || die
- fi
+ # Install lit
+ cd "${S}"/utils/lit || die
+ distutils-r1_src_install
}
multilib_src_install() {
@@ -450,41 +275,6 @@ multilib_src_install() {
"/usr/${CHOST}/binutils-bin/lib/bfd-plugins/LLVMgold.so"
fi
fi
-
- # apply CHOST and CLANG_VERSION to clang executables
- # they're statically linked so we don't have to worry about the lib
- if use clang; then
- local clang_tools=( clang clang++ clang-cl )
- local i
-
- # cmake gives us:
- # - clang-X.Y
- # - clang -> clang-X.Y
- # - clang++, clang-cl -> clang
- # we want to have:
- # - clang-X.Y
- # - clang++-X.Y, clang-cl-X.Y -> clang-X.Y
- # - clang, clang++, clang-cl -> clang*-X.Y
- # so we need to fix the two tools
- for i in "${clang_tools[@]:1}"; do
- rm "${ED%/}/usr/bin/${i}" || die
- dosym "clang-${CLANG_VERSION}" "/usr/bin/${i}-${CLANG_VERSION}"
- dosym "${i}-${CLANG_VERSION}" "/usr/bin/${i}"
- done
-
- # now prepend ${CHOST} and let the multilib-build.eclass symlink it
- if ! multilib_is_native_abi; then
- # non-native? let's replace it with a simple wrapper
- for i in "${clang_tools[@]}"; do
- rm "${ED%/}/usr/bin/${i}-${CLANG_VERSION}" || die
- cat > "${T}"/wrapper.tmp <<-_EOF_
- #!${EPREFIX}/bin/sh
- exec "${i}-${CLANG_VERSION}" $(get_abi_CFLAGS) "\${@}"
- _EOF_
- newbin "${T}"/wrapper.tmp "${i}-${CLANG_VERSION}"
- done
- fi
- fi
}
multilib_src_install_all() {
@@ -492,33 +282,4 @@ multilib_src_install_all() {
doins -r utils/vim/*/.
# some users may find it useful
dodoc utils/vim/vimrc
-
- if use clang; then
- pushd tools/clang >/dev/null || die
-
- if use python ; then
- pushd bindings/python/clang >/dev/null || die
-
- python_moduleinto clang
- python_domodule *.py
-
- popd >/dev/null || die
- fi
-
- # AddressSanitizer symbolizer (currently separate)
- dobin "${S}"/projects/compiler-rt/lib/asan/scripts/asan_symbolize.py
-
- popd >/dev/null || die
-
- python_fix_shebang "${ED}"
- if use static-analyzer; then
- python_optimize "${ED}"usr/share/scan-view
- fi
- fi
-}
-
-pkg_postinst() {
- if use clang && ! has_version 'sys-libs/libomp'; then
- elog "To enable OpenMP support in clang, install sys-libs/libomp."
- fi
}