public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: sys-devel/llvm/, sys-devel/llvm/files/3.6.2/
@ 2017-06-03  8:27 Michał Górny
  0 siblings, 0 replies; only message in thread
From: Michał Górny @ 2017-06-03  8:27 UTC (permalink / raw
  To: gentoo-commits

commit:     9892a35655772e217d5a21c3460203afb5d9719d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed May 24 15:49:12 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jun  3 08:27:39 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9892a356

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

 sys-devel/llvm/Manifest                            |   1 -
 .../llvm/files/3.6.2/ocaml-ctypes-0.4.0.patch      |  35 --
 sys-devel/llvm/llvm-3.6.2-r100.ebuild              | 279 ++++++++++
 sys-devel/llvm/llvm-3.6.2.ebuild                   | 559 ---------------------
 4 files changed, 279 insertions(+), 595 deletions(-)

diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest
index a0cc649999f..f0b9db5c0e4 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.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
 DIST clang-tools-extra-3.9.0.src.tar.xz 455144 SHA256 5b7aec46ec8e999ec683c87ad744082e1133781ee4b01905b4bdae5d20785f14 SHA512 7d5f8d3b44e45022db65434f4d141f23706edf6aa9f3c28ded43e84e85c7c4878ffe98bf15f71e4c71fd176dfc49ce5180892d710bc5eccf95de1ed12f3c8074 WHIRLPOOL 44863889eaa33face00b9644f5c1465446bec39f88bc5ea32835dfa091a83161e292c2b3bcdcccb7cb34cdc3f1970bb3bbfbf6918c425b11a1465bedc3e0611f

diff --git a/sys-devel/llvm/files/3.6.2/ocaml-ctypes-0.4.0.patch b/sys-devel/llvm/files/3.6.2/ocaml-ctypes-0.4.0.patch
deleted file mode 100644
index 154c9cc25f7..00000000000
--- a/sys-devel/llvm/files/3.6.2/ocaml-ctypes-0.4.0.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff -Naur llvm-3.6.0.src.orig/bindings/ocaml/executionengine/llvm_executionengine.ml llvm-3.6.0.src/bindings/ocaml/executionengine/llvm_executionengine.ml
---- llvm-3.6.0.src.orig/bindings/ocaml/executionengine/llvm_executionengine.ml	2015-03-17 11:49:27.274824345 +0100
-+++ llvm-3.6.0.src/bindings/ocaml/executionengine/llvm_executionengine.ml	2015-03-17 11:49:40.333829421 +0100
-@@ -43,11 +43,11 @@
-   = "llvm_ee_run_static_dtors"
- external data_layout : llexecutionengine -> Llvm_target.DataLayout.t
-   = "llvm_ee_get_data_layout"
--external add_global_mapping_ : Llvm.llvalue -> int64 -> llexecutionengine -> unit
-+external add_global_mapping_ : Llvm.llvalue -> nativeint -> llexecutionengine -> unit
-   = "llvm_ee_add_global_mapping"
--external get_global_value_address_ : string -> llexecutionengine -> int64
-+external get_global_value_address_ : string -> llexecutionengine -> nativeint
-   = "llvm_ee_get_global_value_address"
--external get_function_address_ : string -> llexecutionengine -> int64
-+external get_function_address_ : string -> llexecutionengine -> nativeint
-   = "llvm_ee_get_function_address"
- 
- let add_global_mapping llval ptr ee =
-@@ -55,14 +55,14 @@
- 
- let get_global_value_address name typ ee =
-   let vptr = get_global_value_address_ name ee in
--  if Int64.to_int vptr <> 0 then
-+  if Nativeint.to_int vptr <> 0 then
-     let open Ctypes in !@ (coerce (ptr void) (ptr typ) (ptr_of_raw_address vptr))
-   else
-     raise (Error ("Value " ^ name ^ " not found"))
- 
- let get_function_address name typ ee =
-   let fptr = get_function_address_ name ee in
--  if Int64.to_int fptr <> 0 then
-+  if Nativeint.to_int fptr <> 0 then
-     let open Ctypes in coerce (ptr void) typ (ptr_of_raw_address fptr)
-   else
-     raise (Error ("Function " ^ name ^ " not found"))

diff --git a/sys-devel/llvm/llvm-3.6.2-r100.ebuild b/sys-devel/llvm/llvm-3.6.2-r100.ebuild
new file mode 100644
index 00000000000..89a1cabd9bb
--- /dev/null
+++ b/sys-devel/llvm/llvm-3.6.2-r100.ebuild
@@ -0,0 +1,279 @@
+# 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.6.1-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.6"
+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.6.2/gentoo-install.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.7.1/clang/gentoo-install.patch
+		epatch "${FILESDIR}"/3.9.1/clang/darwin_prefix-include-paths.patch
+		eprefixify tools/clang/lib/Frontend/InitHeaderSearch.cpp
+
+		# Fix build fails with using gcc-4.9 on Gentoo/FreeBSD, bug #548444
+		epatch "${FILESDIR}"/3.6.2/clang/fbsd-gcc49.patch
+	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
+
+	# Enable large file support, bug #550708
+	append-lfs-flags
+	# 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.6.1-manpages/clang.1 || die
+	else
+		for tool in clang{,++} ; do
+			dosym ${tool} /usr/bin/${CHOST}-${tool}
+		done
+	fi
+	doman "${WORKDIR}"/${PN}-3.6.1-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.6.2.ebuild b/sys-devel/llvm/llvm-3.6.2.ebuild
deleted file mode 100644
index 4fe633a4eed..00000000000
--- a/sys-devel/llvm/llvm-3.6.2.ebuild
+++ /dev/null
@@ -1,559 +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.6.1-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.6"
-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=
-		dev-ml/findlib
-		dev-ml/ocaml-ctypes )"
-# 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.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 )
-	libffi? ( virtual/pkgconfig )
-	!!<dev-python/configparser-3.3.0.2
-	ocaml? ( test? ( dev-ml/ounit ) )
-	${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 )"
-
-# 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.6.2/gentoo-install.patch
-	epatch "${FILESDIR}"/3.6.2/ocaml-ctypes-0.4.0.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.7.1/clang/gentoo-install.patch
-		epatch "${FILESDIR}"/3.9.1/clang/darwin_prefix-include-paths.patch
-		eprefixify tools/clang/lib/Frontend/InitHeaderSearch.cpp
-
-		# Fix build fails with using gcc-4.9 on Gentoo/FreeBSD, bug #548444
-		epatch "${FILESDIR}"/3.6.2/clang/fbsd-gcc49.patch
-	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
-
-	# Enable large file support, bug #550708
-	append-lfs-flags
-	# 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.6.1-manpages/clang.1 || die
-			fi
-			doman "${WORKDIR}"/${PN}-3.6.1-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
-}


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2017-06-03  8:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-03  8:27 [gentoo-commits] repo/gentoo:master commit in: sys-devel/llvm/, sys-devel/llvm/files/3.6.2/ Michał Górny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox