Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 404766 Details for
Bug 456322
sys-devel/llvm: conversion to use cmake
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
second round, r2
llvm-9999-r1.ebuild (text/plain), 10.94 KB, created by
Michał Górny
on 2015-06-07 21:55:57 UTC
(
hide
)
Description:
second round, r2
Filename:
MIME Type:
Creator:
Michał Górny
Created:
2015-06-07 21:55:57 UTC
Size:
10.94 KB
patch
obsolete
># Copyright 1999-2013 Gentoo Foundation ># Distributed under the terms of the GNU General Public License v2 ># $Header: /var/cvsroot/gentoo-x86/sys-devel/llvm/llvm-9999.ebuild,v 1.71 2013/12/24 20:07:03 mgorny Exp $ > >EAPI=5 > >PYTHON_COMPAT=( python2_7 pypy ) > >inherit check-reqs cmake-utils eutils flag-o-matic git-r3 multilib \ > multilib-minimal python-r1 toolchain-funcs pax-utils > >DESCRIPTION="Low Level Virtual Machine" >HOMEPAGE="http://llvm.org/" >SRC_URI="" >EGIT_REPO_URI="http://llvm.org/git/llvm.git > https://github.com/llvm-mirror/llvm.git" > >LICENSE="UoI-NCSA" >SLOT="0/${PV}" >KEYWORDS="" >IUSE="clang debug doc gold libedit +libffi multitarget ncurses ocaml > python +static-analyzer test xml video_cards_radeon kernel_Darwin" > >COMMON_DEPEND=" > sys-libs/zlib:0= > clang? ( > python? ( ${PYTHON_DEPS} ) > static-analyzer? ( > dev-lang/perl:* > ${PYTHON_DEPS} > ) > xml? ( dev-libs/libxml2:2= ) > ) > gold? ( >=sys-devel/binutils-2.22:*[cxx] ) > libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] ) > libffi? ( >=virtual/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] ) > ncurses? ( >=sys-libs/ncurses-5.9-r3:5=[${MULTILIB_USEDEP}] ) > ocaml? ( > dev-lang/ocaml:0= > dev-ml/findlib > dev-ml/ocaml-ctypes )" ># configparser-3.2 breaks the build (3.3 or none at all are fine) >DEPEND="${COMMON_DEPEND} > dev-lang/perl > dev-python/sphinx > >=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 ) > clang? ( xml? ( virtual/pkgconfig ) ) > libffi? ( virtual/pkgconfig ) > !!<dev-python/configparser-3.3.0.2 > ${PYTHON_DEPS}" >RDEPEND="${COMMON_DEPEND} > clang? ( !<=sys-devel/clang-${PV}-r99 ) > 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} > test? ( || ( $(python_gen_useflags 'python*') ) )" > ># Some people actually override that in make.conf. That sucks since ># we need to run install per-directory, and ninja can't do that... ># so why did it call itself ninja in the first place? >CMAKE_MAKEFILE_GENERATOR=emake > >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 > > 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" > ewarn "and cause the tests to fail." > ewarn > > (( build_size *= 14 )) > elif is-flagq '-g?(gdb)?([1-9])'; then > ewarn "The C++ compiler -g option is known to increase the size of the package" > ewarn "considerably. If you run out of space, please consider removing it." > ewarn > > (( build_size *= 10 )) > fi > > # Multiply by number of ABIs :). > local abis=( $(multilib_get_enabled_abis) ) > (( build_size *= ${#abis[@]} )) > > local CHECKREQS_DISK_BUILD=${build_size}M > check-reqs_pkg_pretend > > if [[ ${MERGE_TYPE} != binary ]]; then > echo 'int main() {return 0;}' > "${T}"/test.cxx || die > ebegin "Trying to build a C++11 test program" > if ! $(tc-getCXX) -std=c++11 -o /dev/null "${T}"/test.cxx; then > eerror "LLVM-${PV} requires C++11-capable C++ compiler. Your current compiler" > eerror "does not seem to support -std=c++11 option. Please upgrade your compiler" > eerror "to gcc-4.7 or an equivalent version supporting C++11." > die "Currently active compiler does not support -std=c++11" > fi > eend ${?} > fi >} > >pkg_setup() { > pkg_pretend >} > >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 > 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 > git-r3_checkout >} > >src_prepare() { > epatch "${FILESDIR}"/${PN}-3.5-gcc-4.9.patch > # Make ocaml warnings non-fatal, bug #537308 > sed -e "/RUN/s/-warn-error A//" -i test/Bindings/OCaml/*ml || die > > # OCaml bindings need to be built before docs > # https://llvm.org/bugs/show_bug.cgi?id=23777 > #epatch "${FILESDIR}"/... > > if use clang; then > # Automatically select active system GCC's libraries, bugs #406163 and #417913 > epatch "${FILESDIR}"/clang-3.5-gentoo-runtime-gcc-detection-v3.patch > > epatch "${FILESDIR}"/clang-3.6-gentoo-install.patch > > # TODO: clang runtime gets installed into libXX instead of lib > fi > > if use prefix && use clang; then > sed -i -e "/^CFLAGS /s@-Werror@-I${EPREFIX}/usr/include@" \ > projects/compiler-rt/make/platform/clang_*.mk || die > fi > > # User patches > epatch_user > > python_setup >} > >multilib_src_configure() { > local targets > if use multitarget; then > targets=all > else > targets='host;CppBackend' > use video_cards_radeon && targets+=';R600' > fi > > local ffi_cflags ffi_ldflags > if use libffi; then > ffi_cflags=$(pkg-config --cflags-only-I libffi) > ffi_ldflags=$(pkg-config --libs-only-L libffi) > fi > > local libdir=$(get_libdir) > local mycmakeargs=( > "${mycmakeargs[@]}" > -DLLVM_LIBDIR_SUFFIX=${libdir#lib} > > -DBUILD_SHARED_LIBS=ON > -DLLVM_ENABLE_TIMESTAMPS=OFF > -DLLVM_TARGETS_TO_BUILD="${targets}" > > -DLLVM_ENABLE_FFI=$(usex libffi) > -DLLVM_ENABLE_TERMINFO=$(usex ncurses) > -DLLVM_ENABLE_ASSERTIONS=$(usex debug) > > -DWITH_POLLY=OFF # TODO > -DLLVM_BUILD_TESTS=$(usex test) > > -DLLVM_HOST_TRIPLE="${CHOST}" > > -DFFI_INCLUDE_DIR="${ffi_cflags#-I}" > -DFFI_LIBRARY_DIR="${ffi_ldflags#-L}" > > -DHAVE_HISTEDIT_H=$(usex libedit) > ) > > if ! multilib_is_native_abi || ! use ocaml; then > mycmakeargs+=( > -DOCAMLFIND=NO > ) > fi ># Note: go bindings have no CMake rules at the moment ># but let's kill the check in case they are introduced ># if ! multilib_is_native_abi || ! use go; then > mycmakeargs+=( > -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND > ) ># fi > > if multilib_is_native_abi; then > mycmakeargs+=( > -DLLVM_BUILD_DOCS=ON > -DLLVM_ENABLE_DOXYGEN=OFF > -DLLVM_ENABLE_SPHINX=ON > -DSPHINX_OUTPUT_HTML=$(usex doc) > ) > > if use gold; then > mycmakeargs+=( > -DLLVM_BINUTILS_INCDIR="${EPREFIX}"/usr/include > ) > fi > else > mycmakeargs+=( > -DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_BUILD=OFF > ) > fi > > if use clang; then > mycmakeargs+=( > -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON > -DCLANG_ENABLE_ARCMT=$(usex static-analyzer) > -DCLANG_ENABLE_STATIC_ANALYZER=$(usex static-analyzer) > ) > > # 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 > > cmake-utils_src_configure >} > >multilib_src_compile() { > cmake-utils_src_compile > ># if multilib_is_native_abi; then ># cd "${S}"/utils/lit || die ># distutils-r1_src_compile ># fi > > if use test; then > pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests > pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests > pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests > fi >} > >multilib_src_test() { > # respect TMPDIR! > local -x LIT_PRESERVES_TMP=1 > local test_targets=( check ) > use clang && test_targets+=( check-clang ) > cmake-utils_src_make "${test_targets[@]}" >} > >src_install() { > local MULTILIB_CHOST_TOOLS=( > /usr/bin/llvm-config > ) > > local MULTILIB_WRAPPED_HEADERS=( > /usr/include/llvm/Config/config.h > /usr/include/llvm/Config/llvm-config.h > ) > > if use clang; then > # note: magic applied below > MULTILIB_CHOST_TOOLS+=( > /usr/bin/clang > /usr/bin/clang++ > /usr/bin/clang-${PV} > /usr/bin/clang++-${PV} > ) > > MULTILIB_WRAPPED_HEADERS+=( > /usr/include/clang/Config/config.h > ) > fi > > > multilib-minimal_src_install >} > >multilib_src_install() { > cmake-utils_src_install > > # TODO: clang_rt files are not installed... wtf? > > if multilib_is_native_abi; then > # Install docs. > #use doc && dohtml -r "${S}"/docs/_build/html/ > > # Symlink the gold plugin. > if use gold; then > dodir "/usr/${CHOST}/binutils-bin/lib/bfd-plugins" > dosym "../../../../$(get_libdir)/LLVMgold.so" \ > "/usr/${CHOST}/binutils-bin/lib/bfd-plugins/LLVMgold.so" > fi > fi > > # apply CHOST and PV 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++ ) > local i > > # append ${PV} and symlink back > # TODO: use alternatives.eclass? does that make any sense? > # maybe with USE=-clang on :0 and USE=clang on older > for i in "${clang_tools[@]}"; do > mv "${ED%/}/usr/bin/${i}"{,-${PV}} || die > dosym "${i}"-${PV} /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}-${PV}" || die > cat > "${T}"/wrapper.tmp <<-_EOF_ > #!${EPREFIX}/bin/sh > exec "${i}-${PV}" $(get_abi_CFLAGS) "\${@}" > _EOF_ > newbin "${T}"/wrapper.tmp "${i}-${PV}" > done > fi > fi >} > >multilib_src_install_all() { > if use doc; then > dodoc -r "${ED}"usr/share/doc/llvm/html > if use clang; then > docinto clang > dodoc -r "${ED}"usr/share/doc/clang/html/. > fi > rm -rf "${ED}"usr/share/doc/{llvm,clang} || die > fi > > pushd utils/vim >/dev/null || die > for dir in */; do > insinto /usr/share/vim/vimfiles/${dir} > doins ${dir}/*.vim > done > popd >/dev/null || die > > if use clang; then > pushd tools/clang >/dev/null || die > > if use static-analyzer ; then > dobin tools/scan-build/ccc-analyzer > dosym ccc-analyzer /usr/bin/c++-analyzer > dobin tools/scan-build/scan-build > > insinto /usr/share/${PN} > doins tools/scan-build/scanview.css > doins tools/scan-build/sorttable.js > fi > > python_inst() { > if use static-analyzer ; then > pushd tools/scan-view >/dev/null || die > > python_doscript scan-view > > touch __init__.py || die > python_moduleinto clang > python_domodule __init__.py Reporter.py Resources ScanView.py startfile.py > > popd >/dev/null || die > fi > > if use python ; then > pushd bindings/python/clang >/dev/null || die > > python_moduleinto clang > python_domodule __init__.py cindex.py enumerations.py > > popd >/dev/null || die > fi > > # AddressSanitizer symbolizer (currently separate) > python_doscript "${S}"/projects/compiler-rt/lib/asan/scripts/asan_symbolize.py > } > python_foreach_impl python_inst > popd >/dev/null || die > fi >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 456322
:
338408
|
338410
|
338422
|
338440
|
338444
|
338486
|
341464
|
341478
|
341480
|
341590
|
341594
|
341596
|
366362
|
404668
|
404766
|
404780