commit:     e4b8cce48ee941fe06b2b6097defcd36efe66ab0
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed May 24 11:32:54 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jun  3 08:27:31 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e4b8cce4

sys-devel/llvm: Minimize 3.5 to be Darwin Prefix-compat only

 sys-devel/llvm/Manifest               |   1 -
 sys-devel/llvm/llvm-3.5.2-r100.ebuild | 275 +++++++++++++++++
 sys-devel/llvm/llvm-3.5.2.ebuild      | 550 ----------------------------------
 3 files changed, 275 insertions(+), 551 deletions(-)

diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest
index 15ae027fa75..a0cc649999f 100644
--- a/sys-devel/llvm/Manifest
+++ b/sys-devel/llvm/Manifest
@@ -5,7 +5,6 @@ DIST cfe-3.7.1.src.tar.xz 9110616 SHA256 
56e2164c7c2a1772d5ed2a3e57485ff73ff06c9
 DIST cfe-3.8.1.src.tar.xz 9605548 SHA256 
4cd3836dfb4b88b597e075341cae86d61c63ce3963e45c7fe6a8bf59bb382cdf SHA512 
72d23a410271b50f97371b13dd7a6c6c5c0a993e35df436ab716ece8521d83406aa3d4bf8fdecd8154139f39fd5e011e480d405225d8c3ff152d0a2ac4573e04
 WHIRLPOOL 
7bcc9e6fed871b7490e2a280f2ad36008150a0af3605357fbe529aea8a7acbbed41c7da273dd150f8f50869cd321f114e909236261c4dd05ed7f644c75f208c4
 DIST cfe-3.9.0.src.tar.xz 10390440 SHA256 
7596a7c7d9376d0c89e60028fe1ceb4d3e535e8ea8b89e0eb094e0dcb3183d28 SHA512 
f405b5819fd19276b2de4da80a51171a3b1c5c00df810e1f284184c693e410775fe2933576f942b881664dd3b75e78f0f15b7e5a3eca7819ffbcfe528d9a578e
 WHIRLPOOL 
cb4ff4eaababa3017b4a96548b7fe1dc5f4926bd27dc6de56c3ae1fc450c8af1faf1edea2e909e40289477ebaf79860fca3a9695b22402dc9385031d7b8ad5bf
 DIST cfe-3.9.1.src.tar.xz 10363080 SHA256 
e6c4cebb96dee827fa0470af313dff265af391cb6da8d429842ef208c8f25e63 SHA512 
3f0eea194597e438bbe49ce9ef5fdced81459c21cbdd2653750b2fe02c55a0154d6a33a8cfd02e607b83314a8e35b2c300f944462120ab6de1d4139d85db56b8
 WHIRLPOOL 
9f70688c7c2857426bf5fbf039b9723ec73ec57e8d3b36da37589bcbdbdb090aa36cd1800f0521ef0c30065bf03083eade0ac81ef0939412919423db7779a6f8
-DIST clang-tools-extra-3.5.2.src.tar.xz 215804 SHA256 
f21a374d74b194d8c984546266491b518859b5f12ed9abd49337b8060d3fc004 SHA512 
6a8e662d2704147296c13626fbc5885911c646c67404f12eacc67ee2995221445bf4f6122b271b9cb3a56b716f550a651024822f72358d400b9052bf50423669
 WHIRLPOOL 
088d2725a88a439a1a2c4048e0eaf540587078078bd1c9823a4804200265cab4d32606abf5e72be76da45ea4aa6e7a7201a2bdbddc78d5f9e0024b0d7b59e222
 DIST clang-tools-extra-3.6.2.src.tar.xz 248624 SHA256 
6a0ec627d398f501ddf347060f7a2ccea4802b2494f1d4fd7bda3e0442d04feb SHA512 
1b7710a7deee30cefb6a3b4edb026a96d8935a0c6f3056ccdb7a45564d10baf01a4f6722ae853ad9a3bad17e8de32a3c0ec99c5cf6144647a5e182809d403f7a
 WHIRLPOOL 
3dc8888c302bac84f53b673784dec092a2c59ea2985d9983e87f057b9aa7b5d3e34cf13d2b0f1f60ea44f342b8167377204a510036872a087037cf02335c19cd
 DIST clang-tools-extra-3.7.1.src.tar.xz 277476 SHA256 
4a91edaccad1ce984c7c49a4a87db186b7f7b21267b2b03bcf4bd7820715bc6b SHA512 
06e2db8af75f1e6ee82da6ee723b5256b9e3f6ba196428f18944ec02d07df26d04329ca8824a083c5f25274ce7e3469aa75e3a29ccfbdb6375524841d65e3ad7
 WHIRLPOOL 
2c1a459d6aff6bc24d5c8d38120ab665adbef61394050781a9707d50e83dae1b4997ed19459086e9bd7f6dd38a09c295d135e33515c947d64a7f1ab714ad8beb
 DIST clang-tools-extra-3.8.1.src.tar.xz 334768 SHA256 
664a5c60220de9c290bf2a5b03d902ab731a4f95fe73a00856175ead494ec396 SHA512 
ec8c4a6ac4fd1a0e24fc15e56ba00828e0d718c2f7bd477ea134ab094c67f4f4b2f603f128ec11a03b7f25f3e9b8fe75181e40730c56b7b683f54e3f37573137
 WHIRLPOOL 
b05213cbe21b778e718233cecbf4d01b92c1f133eced6fdd3fa5059c4b10e5f0407549634f65032af177ba1614250f5c02e283c2b03563db3e227b1afcae424b

diff --git a/sys-devel/llvm/llvm-3.5.2-r100.ebuild 
b/sys-devel/llvm/llvm-3.5.2-r100.ebuild
new file mode 100644
index 00000000000..d6512fff863
--- /dev/null
+++ b/sys-devel/llvm/llvm-3.5.2-r100.ebuild
@@ -0,0 +1,275 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 )
+inherit eutils check-reqs flag-o-matic multilib pax-utils prefix \
+       python-any-r1 toolchain-funcs
+
+DESCRIPTION="Low Level Virtual Machine"
+HOMEPAGE="http://llvm.org/";
+SRC_URI="http://llvm.org/releases/${PV}/${P}.src.tar.xz
+       clang? ( http://llvm.org/releases/${PV}/compiler-rt-${PV}.src.tar.xz
+               http://llvm.org/releases/${PV}/cfe-${PV}.src.tar.xz )
+       https://dev.gentoo.org/~voyageur/distfiles/${PN}-3.5.0-manpages.tar.bz2";
+
+# Additional licenses:
+# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD.
+# 2. ARM backend: LLVM Software Grant by ARM.
+# 3. MD5 code: public-domain.
+# 4. autoconf (not installed): some undefined M.I.T. license.
+# 5. Tests (not installed):
+#  a. gtest: BSD.
+#  b. YAML tests: MIT.
+
+LICENSE="UoI-NCSA rc BSD public-domain"
+SLOT="0/3.5"
+KEYWORDS="~ppc-macos ~x64-macos ~x86-macos"
+IUSE="clang +libffi"
+
+COMMON_DEPEND="
+       sys-libs/zlib:0=
+       libffi? ( >=virtual/libffi-3.0.13-r1:0= )"
+# configparser-3.2 breaks the build (3.3 or none at all are fine)
+DEPEND="${COMMON_DEPEND}
+       app-arch/xz-utils
+       dev-lang/perl
+       >=sys-devel/make-3.81
+       >=sys-devel/flex-2.5.4
+       >=sys-devel/bison-1.875d
+       || ( >=sys-devel/gcc-apple-4.2.1 >=sys-devel/llvm-3.3 )
+       >=sys-devel/binutils-apple-5.1
+       libffi? ( virtual/pkgconfig )
+       !!<dev-python/configparser-3.3.0.2
+       ${PYTHON_DEPS}"
+RDEPEND="${COMMON_DEPEND}
+       clang? ( !<=sys-devel/clang-${PV}-r99
+               !>=sys-devel/clang-9999 )"
+PDEPEND="clang? ( =sys-devel/clang-${PV}-r100 )"
+
+S=${WORKDIR}/${P}.src
+
+check_space() {
+       # 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 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
+
+       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_pretend() {
+       check_space
+}
+
+pkg_setup() {
+       check_space
+}
+
+src_unpack() {
+       default
+
+       rm -f "${S}"/tools/clang "${S}"/projects/compiler-rt \
+               || die "symlinks removal failed"
+
+       if use clang; then
+               mv "${WORKDIR}"/cfe-${PV}.src "${S}"/tools/clang \
+                       || die "clang source directory move failed"
+               mv "${WORKDIR}"/compiler-rt-${PV}.src 
"${S}"/projects/compiler-rt \
+                       || die "compiler-rt source directory move failed"
+       fi
+}
+
+src_prepare() {
+       epatch "${FILESDIR}"/3.6.2/nodoctargz.patch
+       epatch "${FILESDIR}"/3.6.2/gcc-4.9.patch
+       epatch "${FILESDIR}"/3.5.2/gentoo-install.patch
+       epatch "${FILESDIR}"/3.5.2/gcc-5.1.patch
+
+       if use clang; then
+               # Automatically select active system GCC's libraries, bugs 
#406163 and #417913
+               epatch 
"${FILESDIR}"/3.9.0/clang/gentoo-runtime-gcc-detection-v3.patch
+
+               epatch "${FILESDIR}"/3.5.2/clang/gentoo-install.patch
+               epatch 
"${FILESDIR}"/3.9.1/clang/darwin_prefix-include-paths.patch
+               eprefixify tools/clang/lib/Frontend/InitHeaderSearch.cpp
+       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
+
+       # disable use of SDK on OSX, bug #568758
+       sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
+
+       local sub_files=(
+               Makefile.config.in
+               Makefile.rules
+               tools/llvm-config/llvm-config.cpp
+       )
+       use clang && sub_files+=(
+               tools/clang/lib/Driver/Tools.cpp
+               tools/clang/tools/scan-build/scan-build
+       )
+
+       # unfortunately ./configure won't listen to --mandir and the-like, so 
take
+       # care of this.
+       # note: we're setting the main libdir intentionally.
+       # where per-ABI is appropriate, we use $(GENTOO_LIBDIR) make.
+       einfo "Fixing install dirs"
+       sed -e "s,@libdir@,$(get_libdir),g" \
+               -e "s,@PF@,${PF},g" \
+               -e "s,@EPREFIX@,${EPREFIX},g" \
+               -i "${sub_files[@]}" \
+               || die "install paths sed failed"
+
+       if use clang; then
+               # constantly fails for a long time, likely due to our patches
+               rm tools/clang/test/Driver/cross-linux.c || die
+       fi
+
+       # User patches
+       epatch_user
+
+       python_setup
+}
+
+src_configure() {
+       # disable timestamps since they confuse ccache
+       local conf_flags=(
+               --disable-timestamps
+               --enable-keep-symbols
+               --enable-shared
+               --with-optimize-option=
+               --enable-optimized
+               --disable-assertions
+               --disable-expensive-checks
+               --disable-libedit
+               --disable-terminfo
+               $(use_enable libffi)
+
+               --enable-bindings=none
+               --enable-targets=host
+
+               ac_cv_prog_XML2CONFIG=""
+       )
+
+       if use libffi; then
+               local CPPFLAGS=${CPPFLAGS}
+               append-cppflags "$($(tc-getPKG_CONFIG) --cflags libffi)"
+       fi
+
+       # llvm prefers clang over gcc, so we may need to force that
+       tc-export CC CXX
+
+       ECONF_SOURCE=${S} \
+       econf "${conf_flags[@]}"
+}
+
+src_compile() {
+       LLVM_MAKEARGS=(
+               VERBOSE=1
+               REQUIRES_RTTI=1
+               GENTOO_LIBDIR=$(get_libdir)
+       )
+
+       emake "${LLVM_MAKEARGS[@]}"
+
+       pax-mark m Release/bin/llvm-rtdyld
+       pax-mark m Release/bin/lli
+       pax-mark m Release/bin/lli-child-target
+}
+
+src_install() {
+       emake "${LLVM_MAKEARGS[@]}" DESTDIR="${D}" install
+
+       if ! use clang; then
+               rm "${WORKDIR}"/${PN}-3.5.0-manpages/clang.1 || die
+       else
+               for tool in clang{,++} ; do
+                       dosym ${tool} /usr/bin/${CHOST}-${tool}
+               done
+       fi
+       doman "${WORKDIR}"/${PN}-3.5.0-manpages/*.1
+
+       # Fix install_names on Darwin.  The build system is too complicated
+       # to just fix this, so we correct it post-install
+       local lib= f= odylib= ndylib= libpv=${PV}
+       if [[ ${CHOST} == *-darwin* ]] ; then
+               eval $(grep PACKAGE_VERSION= configure)
+               [[ -n ${PACKAGE_VERSION} ]] && libpv=${PACKAGE_VERSION}
+               libpvminor=${libpv%.[0-9]*}
+               for lib in 
lib{EnhancedDisassembly,LLVM-${libpv},LTO,profile_rt,clang}.dylib 
LLVMHello.dylib 
clang/${libpv}/lib/darwin/libclang_rt.asan_{osx,iossim}_dynamic.dylib; do
+                       # libEnhancedDisassembly is Darwin10 only, so non-fatal
+                       # + omit clang libs if not enabled
+                       [[ -f ${ED}/usr/lib/${lib} ]] || continue
+
+                       ebegin "fixing install_name of $lib"
+                       install_name_tool \
+                               -id "${EPREFIX}"/usr/lib/${lib} \
+                               "${ED}"/usr/lib/${lib}
+                       eend $?
+               done
+               for f in "${ED}"/usr/bin/* "${ED}"/usr/lib/lib*.dylib 
"${ED}"/usr/lib/clang/${libpv}/lib/darwin/*.dylib ; do
+                       # omit clang libs if not enabled
+                       [[ -f "${f}" ]] || continue
+
+                       scanmacho -BF'%n#f' "${f}" | tr ',' '\n' | \
+                       while read odylib ; do
+                               ndylib=
+                               case ${odylib} in
+                                       */libclang.dylib)
+                                               
ndylib="${EPREFIX}"/usr/lib/libclang.dylib
+                                               ;;
+                                       */libLLVM-${libpv}.dylib)
+                                               
ndylib="${EPREFIX}"/usr/lib/libLLVM-${libpv}.dylib
+                                               ;;
+                                       */libLLVM-${libpvminor}.dylib)
+                                               
ndylib="${EPREFIX}"/usr/lib/libLLVM-${libpvminor}.dylib
+                                               ;;
+                                       */libLTO.dylib)
+                                               
ndylib="${EPREFIX}"/usr/lib/libLTO.dylib
+                                               ;;
+                               esac
+                               if [[ -n ${ndylib} ]] ; then
+                                       ebegin "fixing install_name reference 
to ${odylib} of ${f##*/}"
+                                       install_name_tool \
+                                               -change "${odylib}" "${ndylib}" 
\
+                                               "${f}"
+                                       eend $?
+                               fi
+                       done
+               done
+       fi
+}

diff --git a/sys-devel/llvm/llvm-3.5.2.ebuild b/sys-devel/llvm/llvm-3.5.2.ebuild
deleted file mode 100644
index dafbd5aa1f1..00000000000
--- a/sys-devel/llvm/llvm-3.5.2.ebuild
+++ /dev/null
@@ -1,550 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-PYTHON_COMPAT=( python2_7 pypy )
-
-inherit eutils flag-o-matic multibuild multilib \
-       multilib-minimal python-r1 toolchain-funcs pax-utils check-reqs prefix
-
-DESCRIPTION="Low Level Virtual Machine"
-HOMEPAGE="http://llvm.org/";
-SRC_URI="http://llvm.org/releases/${PV}/${P}.src.tar.xz
-       clang? ( http://llvm.org/releases/${PV}/compiler-rt-${PV}.src.tar.xz
-               http://llvm.org/releases/${PV}/cfe-${PV}.src.tar.xz
-               
http://llvm.org/releases/${PV}/clang-tools-extra-${PV}.src.tar.xz )
-       !doc? ( 
https://dev.gentoo.org/~voyageur/distfiles/${PN}-3.5.0-manpages.tar.bz2 )"
-
-# Additional licenses:
-# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD.
-# 2. ARM backend: LLVM Software Grant by ARM.
-# 3. MD5 code: public-domain.
-# 4. autoconf (not installed): some undefined M.I.T. license.
-# 5. Tests (not installed):
-#  a. gtest: BSD.
-#  b. YAML tests: MIT.
-
-LICENSE="UoI-NCSA rc BSD public-domain
-       arm? ( LLVM-Grant )
-       arm64? ( LLVM-Grant )
-       multitarget? ( LLVM-Grant )"
-SLOT="0/3.5"
-KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux 
~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
-IUSE="clang debug doc gold libedit +libffi multitarget ncurses ocaml python
-       +static-analyzer test xml video_cards_radeon
-       kernel_Darwin kernel_FreeBSD"
-
-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:0=[${MULTILIB_USEDEP}] )
-       ocaml? ( dev-lang/ocaml:0= )"
-# configparser-3.2 breaks the build (3.3 or none at all are fine)
-DEPEND="${COMMON_DEPEND}
-       app-arch/xz-utils
-       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.3
-               ( >=sys-freebsd/freebsd-lib-9.1-r10 sys-libs/libcxx )
-       )
-       || ( >=sys-devel/binutils-2.18 >=sys-devel/binutils-apple-5.1 )
-       clang? ( xml? ( virtual/pkgconfig ) )
-       doc? ( dev-python/sphinx )
-       libffi? ( virtual/pkgconfig )
-       !!<dev-python/configparser-3.3.0.2
-       ${PYTHON_DEPS}"
-RDEPEND="${COMMON_DEPEND}
-       clang? ( !<=sys-devel/clang-${PV}-r99
-               !>=sys-devel/clang-9999 )
-       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 )
-       kernel_Darwin? ( =sys-libs/libcxx-${SLOT#*/}* )"
-
-# 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*') ) )"
-
-S=${WORKDIR}/${P}.src
-
-# 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
-
-check_space() {
-       # 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_pretend() {
-       check_space
-}
-
-pkg_setup() {
-       check_space
-}
-
-src_unpack() {
-       default
-
-       rm -f "${S}"/tools/clang "${S}"/projects/compiler-rt \
-               || die "symlinks removal failed"
-
-       if use clang; then
-               mv "${WORKDIR}"/cfe-${PV}.src "${S}"/tools/clang \
-                       || die "clang source directory move failed"
-               mv "${WORKDIR}"/compiler-rt-${PV}.src 
"${S}"/projects/compiler-rt \
-                       || die "compiler-rt source directory move failed"
-               mv "${WORKDIR}"/clang-tools-extra-${PV}.src 
"${S}"/tools/clang/tools/extra \
-                       || die "clang-tools-extra source directory move failed"
-       fi
-}
-
-src_prepare() {
-       epatch "${FILESDIR}"/3.6.2/nodoctargz.patch
-       epatch "${FILESDIR}"/3.6.2/gcc-4.9.patch
-       epatch "${FILESDIR}"/3.5.2/gentoo-install.patch
-       epatch "${FILESDIR}"/3.5.2/gcc-5.1.patch
-       # Make ocaml warnings non-fatal, bug #537308
-       sed -e "/RUN/s/-warn-error A//" -i test/Bindings/Ocaml/*ml  || die
-
-       if use clang; then
-               # Automatically select active system GCC's libraries, bugs 
#406163 and #417913
-               epatch 
"${FILESDIR}"/3.9.0/clang/gentoo-runtime-gcc-detection-v3.patch
-
-               epatch "${FILESDIR}"/3.5.2/clang/gentoo-install.patch
-               epatch 
"${FILESDIR}"/3.9.1/clang/darwin_prefix-include-paths.patch
-               eprefixify tools/clang/lib/Frontend/InitHeaderSearch.cpp
-       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
-
-       # disable use of SDK on OSX, bug #568758
-       sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
-
-       local sub_files=(
-               Makefile.config.in
-               Makefile.rules
-               tools/llvm-config/llvm-config.cpp
-       )
-       use clang && sub_files+=(
-               tools/clang/lib/Driver/Tools.cpp
-               tools/clang/tools/scan-build/scan-build
-       )
-
-       # unfortunately ./configure won't listen to --mandir and the-like, so 
take
-       # care of this.
-       # note: we're setting the main libdir intentionally.
-       # where per-ABI is appropriate, we use $(GENTOO_LIBDIR) make.
-       einfo "Fixing install dirs"
-       sed -e "s,@libdir@,$(get_libdir),g" \
-               -e "s,@PF@,${PF},g" \
-               -e "s,@EPREFIX@,${EPREFIX},g" \
-               -i "${sub_files[@]}" \
-               || die "install paths sed failed"
-
-       if use clang; then
-               # constantly fails for a long time, likely due to our patches
-               rm tools/clang/test/Driver/cross-linux.c || die
-       fi
-
-       # User patches
-       epatch_user
-
-       python_setup
-}
-
-multilib_src_configure() {
-       # disable timestamps since they confuse ccache
-       local conf_flags=(
-               --disable-timestamps
-               --enable-keep-symbols
-               --enable-shared
-               --with-optimize-option=
-               $(tc-is-static-only && echo --disable-shared)
-               $(use_enable !debug optimized)
-               $(use_enable debug assertions)
-               $(use_enable debug expensive-checks)
-               $(use_enable libedit)
-               $(use_enable ncurses terminfo)
-               $(use_enable libffi)
-       )
-
-       # well, it's used only by clang executable c-index-test
-       if multilib_is_native_abi && use clang && use xml; then
-               conf_flags+=( XML2CONFIG="$(tc-getPKG_CONFIG) libxml-2.0" )
-       else
-               conf_flags+=( ac_cv_prog_XML2CONFIG="" )
-       fi
-
-       local targets bindings
-       if use multitarget; then
-               targets='all'
-       else
-               targets='host,cpp'
-               use video_cards_radeon && targets+=',r600'
-       fi
-       conf_flags+=( --enable-targets=${targets} )
-
-       if multilib_is_native_abi; then
-               use gold && conf_flags+=( 
--with-binutils-include="${EPREFIX}"/usr/include/ )
-               # extra commas don't hurt
-               use ocaml && bindings+=',ocaml'
-       fi
-
-       [[ ${bindings} ]] || bindings='none'
-       conf_flags+=( --enable-bindings=${bindings} )
-
-       if use libffi; then
-               local CPPFLAGS=${CPPFLAGS}
-               append-cppflags "$($(tc-getPKG_CONFIG) --cflags libffi)"
-       fi
-
-       # llvm prefers clang over gcc, so we may need to force that
-       tc-export CC CXX
-
-       ECONF_SOURCE=${S} \
-       econf "${conf_flags[@]}"
-}
-
-set_makeargs() {
-       MAKEARGS=(
-               VERBOSE=1
-               REQUIRES_RTTI=1
-               GENTOO_LIBDIR=$(get_libdir)
-       )
-
-       # for tests, we want it all! otherwise, we may use a little filtering...
-       # adding ONLY_TOOLS also disables unittest building...
-       if [[ ${EBUILD_PHASE_FUNC} != src_test ]]; then
-               local tools=( llvm-config )
-               use clang && tools+=( clang )
-
-               if multilib_is_native_abi; then
-                       tools+=(
-                               opt llvm-as llvm-dis llc llvm-ar llvm-nm 
llvm-link lli
-                               llvm-extract llvm-mc llvm-bcanalyzer llvm-diff 
macho-dump
-                               llvm-objdump llvm-readobj llvm-rtdyld 
llvm-dwarfdump llvm-cov
-                               llvm-size llvm-stress llvm-mcmarkup 
llvm-profdata
-                               llvm-symbolizer obj2yaml yaml2obj lto bugpoint
-                       )
-
-                       # the build system runs explicitly specified tools in 
parallel,
-                       # so we need to split it into two runs
-                       if [[ ${1} != -1 ]]; then
-                               # those require lto
-                               tools+=( llvm-lto )
-                               use gold && tools+=( gold )
-
-                               # those require clang :)
-                               # we need to explicitly specify all its tools
-                               # since we're passing BUILD_CLANG_ONLY
-                               use clang && tools+=(
-                                       
clang/tools/{clang-check,clang-format,extra}
-                               )
-                       fi
-               fi
-
-               MAKEARGS+=(
-                       # filter tools + disable unittests implicitly
-                       ONLY_TOOLS="${tools[*]}"
-
-                       # this disables unittests & docs from clang
-                       BUILD_CLANG_ONLY=YES
-               )
-       fi
-}
-
-multilib_src_compile() {
-       local MAKEARGS
-       set_makeargs -1
-       emake "${MAKEARGS[@]}"
-
-       if multilib_is_native_abi; then
-               set_makeargs
-               emake -C tools "${MAKEARGS[@]}"
-
-               if use doc; then
-                       emake -C "${S}"/docs -f Makefile.sphinx man
-                       use clang && emake -C "${S}"/tools/clang/docs/tools \
-                               BUILD_FOR_WEBSITE=1 DST_MAN_DIR="${T}"/ man
-                       emake -C "${S}"/docs -f Makefile.sphinx html
-               fi
-       fi
-
-       if use debug; then
-               pax-mark m Debug+Asserts+Checks/bin/llvm-rtdyld
-               pax-mark m Debug+Asserts+Checks/bin/lli
-               pax-mark m Debug+Asserts+Checks/bin/lli-child-target
-       else
-               pax-mark m Release/bin/llvm-rtdyld
-               pax-mark m Release/bin/lli
-               pax-mark m Release/bin/lli-child-target
-       fi
-}
-
-multilib_src_test() {
-       local MAKEARGS
-       set_makeargs
-
-       # build the remaining tools & unittests
-       emake "${MAKEARGS[@]}"
-
-       pax-mark m unittests/ExecutionEngine/JIT/Release/JITTests
-       pax-mark m unittests/ExecutionEngine/MCJIT/Release/MCJITTests
-       pax-mark m unittests/Support/Release/SupportTests
-
-       # respect TMPDIR!
-       local -x LIT_PRESERVES_TMP=1
-       emake "${MAKEARGS[@]}" check
-       use clang && emake "${MAKEARGS[@]}" -C tools/clang test
-}
-
-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
-
-       # Remove unnecessary headers on FreeBSD, bug #417171
-       use kernel_FreeBSD && use clang && rm 
"${ED}"usr/lib/clang/${PV}/include/{std,float,iso,limits,tgmath,varargs}*.h
-}
-
-multilib_src_install() {
-       local MAKEARGS
-       set_makeargs
-
-       local root=${D}/_${ABI}
-
-       emake "${MAKEARGS[@]}" DESTDIR="${root}" install
-       multibuild_merge_root "${root}" "${D}"
-
-       if ! multilib_is_native_abi; then
-               # Backwards compat, will be happily removed someday.
-               dosym "${CHOST}"-llvm-config /usr/bin/llvm-config.${ABI}
-       else
-               # Install docs.
-               if use doc; then
-                       doman "${S}"/docs/_build/man/*.1
-                       use clang && doman "${T}"/clang.1
-                       dohtml -r "${S}"/docs/_build/html/
-               else
-                       if ! use clang; then
-                               rm "${WORKDIR}"/${PN}-3.5.0-manpages/clang.1 || 
die
-                       fi
-                       doman "${WORKDIR}"/${PN}-3.5.0-manpages/*.1
-               fi
-
-               # 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
-
-       # Fix install_names on Darwin.  The build system is too complicated
-       # to just fix this, so we correct it post-install
-       local lib= f= odylib= ndylib= libpv=${PV}
-       if [[ ${CHOST} == *-darwin* ]] ; then
-               eval $(grep PACKAGE_VERSION= configure)
-               [[ -n ${PACKAGE_VERSION} ]] && libpv=${PACKAGE_VERSION}
-               libpvminor=${libpv%.[0-9]*}
-               for lib in 
lib{EnhancedDisassembly,LLVM-${libpv},LTO,profile_rt,clang}.dylib 
LLVMHello.dylib 
clang/${libpv}/lib/darwin/libclang_rt.asan_{osx,iossim}_dynamic.dylib; do
-                       # libEnhancedDisassembly is Darwin10 only, so non-fatal
-                       # + omit clang libs if not enabled
-                       [[ -f ${ED}/usr/lib/${lib} ]] || continue
-
-                       ebegin "fixing install_name of $lib"
-                       install_name_tool \
-                               -id "${EPREFIX}"/usr/lib/${lib} \
-                               "${ED}"/usr/lib/${lib}
-                       eend $?
-               done
-               for f in "${ED}"/usr/bin/* "${ED}"/usr/lib/lib*.dylib 
"${ED}"/usr/lib/clang/${libpv}/lib/darwin/*.dylib ; do
-                       # omit clang libs if not enabled
-                       [[ -f "${f}" ]] || continue
-
-                       scanmacho -BF'%n#f' "${f}" | tr ',' '\n' | \
-                       while read odylib ; do
-                               ndylib=
-                               case ${odylib} in
-                                       */libclang.dylib)
-                                               
ndylib="${EPREFIX}"/usr/lib/libclang.dylib
-                                               ;;
-                                       */libLLVM-${libpv}.dylib)
-                                               
ndylib="${EPREFIX}"/usr/lib/libLLVM-${libpv}.dylib
-                                               ;;
-                                       */libLLVM-${libpvminor}.dylib)
-                                               
ndylib="${EPREFIX}"/usr/lib/libLLVM-${libpvminor}.dylib
-                                               ;;
-                                       */libLTO.dylib)
-                                               
ndylib="${EPREFIX}"/usr/lib/libLTO.dylib
-                                               ;;
-                               esac
-                               if [[ -n ${ndylib} ]] ; then
-                                       ebegin "fixing install_name reference 
to ${odylib} of ${f##*/}"
-                                       install_name_tool \
-                                               -change "${odylib}" "${ndylib}" 
\
-                                               "${f}"
-                                       eend $?
-                               fi
-                       done
-               done
-       fi
-}
-
-multilib_src_install_all() {
-       insinto /usr/share/vim/vimfiles/syntax
-       doins utils/vim/*.vim
-
-       if use clang; then
-               cd tools/clang || 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
-       fi
-}

Reply via email to