public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Fabian Groffen" <grobian@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-devel/binutils-apple/
Date: Fri, 27 Nov 2020 15:33:26 +0000 (UTC)	[thread overview]
Message-ID: <1606491195.6f3826c28e296d98a50d7423c80041c3df0c86cd.grobian@gentoo> (raw)

commit:     6f3826c28e296d98a50d7423c80041c3df0c86cd
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 27 15:33:15 2020 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Fri Nov 27 15:33:15 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6f3826c2

sys-devel/binutils-apple-11.3.1: version bump by Jacob Floyd, #693444

Closes: https://bugs.gentoo.org/693444
Package-Manager: Portage-3.0.9, Repoman-3.0.2
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 sys-devel/binutils-apple/Manifest                  |   4 +
 .../binutils-apple/binutils-apple-11.3.1.ebuild    | 374 +++++++++++++++++++++
 2 files changed, 378 insertions(+)

diff --git a/sys-devel/binutils-apple/Manifest b/sys-devel/binutils-apple/Manifest
index 530d344b9cc..6466da784e5 100644
--- a/sys-devel/binutils-apple/Manifest
+++ b/sys-devel/binutils-apple/Manifest
@@ -1,4 +1,5 @@
 DIST binutils-apple-LP64-patches-1.tar.bz2 10235 BLAKE2B 3352170bcfe73c574217597233ca58c7d6ebeedf9dfe9da1399953dfe1a0c87fc26e9ba8864620ddd67c6f38e48aeb6950737637605f0b860eb4a0d246f3aff7 SHA512 5632d4033c39e47de3ec275d02100ed53408a63122fe722c26dda1b02275c397524b113e51e1334d3235fc7f0a3bb8e53d4ccc1c2e40f24c6129282846da22e1
+DIST binutils-apple-patches-11.3.tar.bz2 7871 BLAKE2B de4e909a084da79d139b7f07d98c55ebe8aac3fc5ba5accb365e0eb003b726a619369e7695f43faaeb6acabc1db5eba9195e8e22aeed0e864446ade48d13a826 SHA512 ae73528bd0fa47413caef0f65b0077011123ae2bcf366a09da8fcd5cb79ef76495f9c11560f039fc2f35405430d5ff0295913ba44dce1a8677bd347db179ecdf
 DIST binutils-apple-patches-3.2-r0.tar.bz2 4137 BLAKE2B 9cd7afbba5337cb9c395556b2691e4acd73ee323d643da4335f6465ccc29b06f889d01fb42c7778576607bfdb859e2df38d3ebf82d4bf7f0971079da6985f237 SHA512 5381a93d61c39993cdb294ecb238016e26cdfe283fae553f75ddc6662812709301d5208c770ac0992d1dfab92e4802c660e6fb4336ad891335ab716d3b042805
 DIST binutils-apple-patches-3.2.6-r0.tar.bz2 3500 BLAKE2B f10dcf71400ea5d4bf7efb8ad906240765cfb56743274b3e1684eeb4273a35171aa4202d475920cff2c5c39e89f9bd1d7e5b0d38ba6c2b4705b0a592ba47e063 SHA512 4ccb8ebd49ac8eac4dbd0c1f24ee1836f216efd2e9e15b13072cbc76d8f83fbf4f1f6b3b60736bf5d5482af3e49ec1eaedfce8dd0ce1e949f915faf9c92ee0ea
 DIST binutils-apple-patches-4.3-r1.tar.bz2 37363 BLAKE2B a5ad04d4bf746a864f03a25d052197ed9a6ecada1f34460f4e38bea8cd87dfe2cb6c7f99f2096acac2231cd1e0c13c53757854b07f729a7a0c5a162a908fbe83 SHA512 f5d64ad182891c3af971e6aabd3c0c1b717b6a1cb471632339cba61b41a998d15880d18de09aafa1c3d059e528c888d6e8b914025c79bc21897d90a6d0e2ebf5
@@ -20,6 +21,7 @@ DIST cctools-877.7.tar.gz 1720523 BLAKE2B 78e4d387b34504a001a5dac2db5f791fcbeae7
 DIST cctools-877.8.tar.gz 1720708 BLAKE2B 97bce69d7c88a917ad1351635b4bd0ebd3273f7a62b10dd3d58a0df7e1de2e05dc3fa04b014dff6966e77b85e264d1be181ac4d5dafc069c72c79d803393176a SHA512 3f75fbe4eacd89f2e6372a3167ed197e2b8bda9faa10fe6bce0cf9d3d3eca536f0af5fc4ce1e4bc6a24eb68db36f5d0b1d0bc3f9807e285e67cfaa2d336d81ef
 DIST cctools-886.tar.gz 1731850 BLAKE2B c206ad8c94fa3d132726db8cbc60ed09b6f1f7aa8118a99b1e7ed350323c11b729d68c912ba7648cf900cc2a26cbff12a03072afe92efe09c8974be280448731 SHA512 49f14e165da3a9fcf16614a810b8a2a68907348bd27a60b268b330e416a0bc070fb6445e1e6b80d849026bd6ce7de4459623ab86168e2d63bb492d1ba6680c5b
 DIST cctools-895.tar.gz 1716126 BLAKE2B 9706a6b243518693888e5e21dfe8d83b217380b47db621a7f1b35105eb72fb8997353ff85133224b0856f6b6ec710f54a4fe79076d9e228f89c98b6f517de309 SHA512 4ef9db870385cc2c4263bcbe42ff0de80386771f5acbc7082a1818ecd6b8d7bb1bfa02a7fcfecd3e7281481aeaaac4c331359aca3564bfe7a4c7dea1e0d06126
+DIST cctools-949.0.1.tar.gz 1968671 BLAKE2B b38fbae5d2ec011a94c2e4ec299c1ecd173f2c2516664cf925b06aaa078e234b59068158ea29dfcbf763ca98c73bc1806a507fbbe49a8d4d0a2fd4e602f401ce SHA512 13c493a48852c980d2829d28616c18640ad5ebfe6acd55143c4c948665e0b65377a459560667074fdac5e69bb6360fea13d988303c49fd3dd4a58e9b5c54ebcb
 DIST dyld-132.13.tar.gz 342690 BLAKE2B 011418ba5b91a28bb7c5f8188af2fac5478bad53581396b7c1c4623a854a8f0d5ecb92d023246157830ed2db83bbf28e23225a255188e2d07eeb6c933814bda6 SHA512 2c9d50fc32868b696d88730eb6ea6afa9bb9f56883cc2ea4f1d41f370f311b7487a29ce0eff6761e1eeb086a18e2513953989d8d5d3ef1043bb662e86baadd3f
 DIST dyld-195.6.tar.gz 412518 BLAKE2B f525aac0020baa69c5d7c42a7027b0d2fdef9fa3c2e5d3831101989eab20f2eb7932c99355ca34e6e0b988b9808013739d452592e0b8832e1306cc6027cc5d0f SHA512 58a9ea27efc02e66f9d99bfa250af1d90326385385431e5279386bbd9ab53366bf7e8236543296908b7214c33523c8f60098a6298a7393b3180e2a6bce18e7c5
 DIST dyld-353.2.1.tar.gz 510036 BLAKE2B 6f355bcb87d6136d3c29b2766146303ecf092fb407296a0a93412598276ea88c4f826da75d20cc5d3e2bfac750a62c413b117ee95dd710eac83b647786fb109b SHA512 a9488620499f682e245b55b7e0e4ec02fc0bcf03bd8a70d4a4ee0ba762067ade2f41c188990c101727476d41c19368b4cc89cccf2df40231da1c777742c7391f
@@ -27,6 +29,7 @@ DIST dyld-360.14.tar.gz 518873 BLAKE2B ebf651a8880ef337ed5ee7d5d7b9d2da77fed481f
 DIST dyld-360.17.tar.gz 518876 BLAKE2B f627c7628b0956fef040a526116d27db14010eb0769394c9130d5b0d24d0d03a471d1c44e9533a34b1832f542a98432f2045b309a85dff4e0c1756f7bc1b0fb4 SHA512 aae2a0ea1f4130de51aa920ce1affa579993b3b58a7d398ec998c0d7ac4919907ba4e508b9bfc15080b1f4f4cf15e4615bc416b6ec32b52a4b5d8fbbad1dc9ab
 DIST dyld-360.18.tar.gz 518957 BLAKE2B 536954a681a18d55f9dba6e4ec2bce116dea84f80769c57518b50b3187625a7384bb77afe3d8b24c456da3ab4d8206f1ddfdbd008e4674dc1f5e9574ca09596f SHA512 1299bd2dd5cd663917ec4a03ed0f875e0bf07d6680d3d095af12f4b11960c02a52e361bde27ff88843f80832fc6d36654e2556ee0a3ca2259fcded5b568ab2f9
 DIST dyld-421.2.tar.gz 625173 BLAKE2B 8f8325314861ae2ea10fbe78c74c7199b547973ac61a8e9cb76fb874a0e53395ea31c04e489f85ac7cfdb5715ae5051679453de75eb195e313113e7bbbc70340 SHA512 75f2fb840da980d44649aa3e045f50c4e37d4403fbdb1e2e5f1a85bf6d8859e1130053c3806f7ef992fdfc6573f7f18146263c690144bdd3df31452c6bdd8bd8
+DIST dyld-551.4.tar.gz 832297 BLAKE2B e65c5b2ed90af6ec94f1295efc984404af99f0e5dc666bfc854379f13fd2e98b8048fae84b7bc8864fe27112abf12f741a33cc404b18ae7c88b7abd6a1d9e3c6 SHA512 896281c4b2330c92ed538af58f1b60906ed0a9ffa3099a5e8ef9a15b7ed974259bf546fd2ab7562739f2c8cf1fdfb44ea0ea7567092c77f2ea2cab377da064b0
 DIST ld64-128.2.tar.gz 494361 BLAKE2B 787d145edafe56a134ead84ae376842d9994608a771d0512a6f56738e170c2498a031c77c895da79b30efa309986c8cd624f5f09cd9784f63c7b2d2e0334e0d9 SHA512 f50a3c396e6f4fddc685bb3f59f9a260bd2f47060535d24259b2b411e4f759e48daa35819da682ad9bceaa1b9a1981eb34716387d988cdc4b7eec9ab2169726e
 DIST ld64-236.3.tar.gz 624400 BLAKE2B 37c074093c312fc9720564aa9702d6007bd44252a1282c4c67e0c1b75f6f4aeaf5b6278df3d5ed5f5baee948c547a462476dfe5eabb665612e4d31d57f26a286 SHA512 e103fc5efd4d4161c7dc55b1ad53aebd455cfcd72de7873ebfdf5ba896b7b0da9c9aeb12e1e1a76425768ac1dc85d864a4ce33b5b841ba115eeab96a2e2965aa
 DIST ld64-241.9.tar.gz 639944 BLAKE2B 1aa58dbb4e42b8314421bb10867aacd6cdece7a5983ed88571349e97366b61c1de175769b2d9f7b04495f2f306406f8a6fe785548f74dd39f419f321ec24d93b SHA512 6958e7064f4fd8b47501225fc4cbc6292e5da63d7f4103ad79add177ef7382c8de3c732f14d19a9c11356b8070f578392383caccc3795e2ab8ef7b7ddbde88da
@@ -37,6 +40,7 @@ DIST ld64-253.9.tar.gz 673388 BLAKE2B 65af4f3ddd49b15deecf824fd991d41e5223ff9c96
 DIST ld64-264.3.102.tar.gz 681509 BLAKE2B 4a0699ec761bd145b8034c8577ce9f843c9384fee5486855565d1d89858a445492d66aca2798a6e9c1bb4f59328680c05bcf1cd024d917c063e74d3549073ce0 SHA512 ec221de3624dcce3db694ec2d7b05f3c939cd1ba79c97437ba9f2d4e5d9c37369bb5df82cc37bc158bf5c4e2128cc2b96ca1a7477f98538850092bffa4601da0
 DIST ld64-274.1.tar.gz 670493 BLAKE2B 00ab46b09f29c6143c5066ffb0a12017fb2268a5f205c41851a95bc38443aa5494ce81b793a6668bcd3a8abb0ba4215f0da372c413ae52e4ca1e437ad370f8e0 SHA512 ef5d6802f759e09aa2dfab7eb84e9cd2a57b28da3f150833cf1a922c395dd696e501b1bcb10385cbe995f4945fc6c99c2d2d8c50c42f369186bdc1ac3e30ad99
 DIST ld64-274.2.tar.gz 671652 BLAKE2B f45bb65bbe65c7baff54dec633a49b8ea472a59a7978aa050b329132963b26e4a2b3ef3dd034b04247531a11a07de5135b3726a429165cbfcae50e06c09531f4 SHA512 7b4e17f199909450b697bf719564c6841d46f5116c48dd47ff483ae7ddfe2965db1b7c024ed8ebeeaf90cd983ed353b95f7f23c93c8971536977dc892e6d6a9d
+DIST ld64-530.tar.gz 744871 BLAKE2B 8117160ffe55c02b463559a52fcbd109629d6e2b4707f36391ec2151785cc1ab5be911129397af7bea05f06b2c718bc345a1e3b6b0838dae943f4083612af38f SHA512 0197ec05f9fbaf9e1902bb6e0819d0562573a433e0445809f1020e76126d3af57222a8e9e187fce793a5b581f825b48bfb5ec5cca9ae3eb77758cbc7f20e9e20
 DIST ld64-85.2.1.tar.gz 598524 BLAKE2B 92cb3c763cc067e2ee6c4fec910f078cc69daca2a328a74ebc988908b1655138873b69bfb0c19b284f0aedb678e99de3866d4f13460cb3427985704093dca37a SHA512 b5ffaffc43e74f22688fecd9fb3023a59160cf051f9412f34e6b0acf1c4f9d43ba641e199d8d6b1c6cf3bbbbf117645988fd879ded1fec8be056b6941fe79999
 DIST ld64-97.17.tar.gz 421947 BLAKE2B 56820ef28490f2e0181d6e36b87506c6f00ae5759afe304a063fb6bd1904ace566ef4aa69ff0d235d65968af547a1a5735cb23bcefa990f418740188d399b637 SHA512 841774a1a7c0e2f661ac7e66703f7578d8f11274897ffa15f8c49daf290a23465763f264a4dae99f15754891f44c425c0d327652112007b499bc8f755a7fc9d6
 DIST libunwind-30.tar.gz 82811 BLAKE2B 26993d6afa6930931c01b579326964a66832ed7a6ffa26eff10016c8d6d175d3b671753cf8700dcdbae7f0a9c01b16e9cbd3c9fe86697608f1f08a8eceb64782 SHA512 57106eafa1516791b4e0db2de6c6336bc0c1cbd8bf098a6d3a809fafa457802c95a7aeae9137f4ca5922a3018dfd8f597907ea4187b0afbbf267500eae00041f

diff --git a/sys-devel/binutils-apple/binutils-apple-11.3.1.ebuild b/sys-devel/binutils-apple/binutils-apple-11.3.1.ebuild
new file mode 100644
index 00000000000..9263d8e00b0
--- /dev/null
+++ b/sys-devel/binutils-apple/binutils-apple-11.3.1.ebuild
@@ -0,0 +1,374 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+inherit eutils flag-o-matic toolchain-funcs llvm prefix
+
+# versions:
+# XCode-11.3.1                 ld64-530        cctools-949.0.1
+# XCode-11.2.1                 ld64-520        cctools-949.0.1
+# XCode-11.0                   ld64-512.4      cctools-949.0.1
+# XCode-8.2.1                  ld64-274.2      cctools-895         <== binutils-apple-8.2.1-r1  (2019)
+
+# macOS-10.15.6                dyld-750.6                          Causes build failures with Xcode-11 tools
+# macOS-10.14.4-10.14.6        dyld-655.1.1                        Causes build failures with Xcode-11 tools
+# macOS-10.13.6                dyld-551.4
+# macOS-10.12.1-10.12.3        dyld-421.2                          <== binutils-apple-8.2.1-r1,8.1
+
+LD64=ld64-530
+CCTOOLS_VERSION=949.0.1
+CCTOOLS=cctools-${CCTOOLS_VERSION}
+DYLD=dyld-551.4
+
+DESCRIPTION="Darwin assembler as(1) and static linker ld(1), Xcode Tools ${PV}"
+HOMEPAGE="http://www.opensource.apple.com/"
+SRC_URI="http://www.opensource.apple.com/tarballs/ld64/${LD64}.tar.gz
+	http://www.opensource.apple.com/tarballs/cctools/${CCTOOLS}.tar.gz
+	http://www.opensource.apple.com/tarballs/dyld/${DYLD}.tar.gz
+	https://dev.gentoo.org/~grobian/distfiles/${PN}-patches-4.3-r1.tar.bz2
+	https://dev.gentoo.org/~grobian/distfiles/${PN}-patches-5.1-r2.tar.bz2
+	https://dev.gentoo.org/~grobian/distfiles/${PN}-patches-7.3-r2.tar.bz2
+	https://dev.gentoo.org/~grobian/distfiles/${PN}-patches-8.2-r1.tar.bz2
+	https://dev.gentoo.org/~grobian/distfiles/${PN}-patches-11.3.tar.bz2"
+
+LICENSE="APSL-2"
+KEYWORDS="~x64-macos ~x86-macos"
+IUSE="lto classic test" # tapi is now required
+RESTRICT="!test? ( test )"
+
+# ld64 can now only be compiled using llvm and libc++ since it massively uses
+# C++11 language features. *But additionally* the as driver now defaults to
+# calling clang as the assembler on many platforms. This can be disabled using
+# -Wa,-Q but since it's default we make llvm a static runtime dependency.
+RDEPEND="sys-devel/binutils-config
+	lto? ( app-arch/xar )
+	sys-libs/tapi
+	sys-devel/llvm:*
+	sys-libs/libcxx"
+DEPEND="${RDEPEND}
+	test? ( >=dev-lang/perl-5.8.8 )"
+
+SLOT="11"
+
+S=${WORKDIR}
+
+is_cross() { [[ ${CHOST} != ${CTARGET} ]] ; }
+
+llvm_pkg_setup() {
+	# eclass version will die if no LLVM can be found which will break prefix
+	# bootstrap
+	:
+}
+
+src_prepare() {
+	cd "${S}"/${LD64}/src
+	cp "${S}"/ld64-136-compile_stubs.h ld/compile_stubs.h
+	cp "${S}"/ld64-530-Makefile Makefile
+
+	epatch "${S}"/ld64-530-nolto.patch
+	epatch "${S}"/ld64-236.3-crashreporter.patch
+
+	# workound llvm-3.9.{0,1} issue
+	# https://bugs.gentoo.org/show_bug.cgi?id=603580
+	# https://groups.google.com/forum/#!topic/llvm-dev/JY6nuKE__sU
+	# http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20160829/169553.html
+	sed -i -e '/COMPILE_TIME_ASSERT/d' ld/parsers/libunwind/*.hpp || die
+
+	# provide missing headers dyld
+	mkdir -p include/mach-o || die
+	# never present because it's private
+	cp ../../${DYLD}/include/mach-o/dyld_priv.h include/mach-o || die
+
+	local VER_STR="\"@(#)PROGRAM:ld  PROJECT:${LD64} (Gentoo ${PN}-${PVR})\\n\""
+	echo "char ldVersionString[] = ${VER_STR};" > version.cpp
+
+	cd "${S}"/${CCTOOLS}
+	epatch "${S}"/${PN}-4.5-as.patch
+	epatch "${S}"/${PN}-5.1-as-dir.patch
+	epatch "${S}"/${PN}-5.1-ranlib.patch
+	epatch "${S}"/${PN}-3.1.1-libtool-ranlib.patch
+	epatch "${S}"/${PN}-3.1.1-no-headers.patch
+	epatch "${S}"/${PN}-4.0-no-oss-dir.patch
+	epatch "${S}"/cctools-839-intel-retf.patch
+	epatch "${S}"/${PN}-5.1-extraneous-includes.patch
+	epatch "${S}"/${PN}-5.1-strnlen.patch
+	epatch "${S}"/${PN}-7.3-make-j.patch
+	epatch "${S}"/${PN}-11.3.1-no-developertools-dir.patch # 7.3 failed to apply. updated
+	epatch "${S}"/${PN}-11.3.1-llvm-prefix.patch # 8.2.1 failed to apply. updated
+	epatch "${S}"/${PN}-8.2.1-llvm-shim.patch
+	epatch "${S}"/${PN}-11.3.1-nolto-fix.patch # bugfix
+	epatch "${S}"/${PN}-11.3.1-segaddrtable-fix.patch # bugfix
+	eprefixify libstuff/execute.c
+	cp ../${LD64}/src/other/prune_trie.h include/mach-o/ || die
+
+	# do not build profileable libstuff to save compile time
+	sed -i -e "/^all:/s, profile , ," libstuff/Makefile
+
+	# bugfix. args.c not built but args_expand_at is used in misc/libtool.c
+	sed -i -e "/^CFILES = /s, errors.c , errors.c args.c ," libstuff/Makefile
+
+	# cctools version is provided to make via RC_ProjectSourceVersion which
+	# generates and compiles it as apple_version[] into libstuff. From
+	# there it's picked up by the individual tools. Since
+	# RC_ProjectSourceVersion is also used as library version, we can't
+	# just append our local version info. So we hack the libstuff Makefile
+	# to include our Gentoo version.
+	sed -i -e "/cctools-.*(RC_ProjectSourceVersion).*OFILE_DIR/s,Version),Version) (Gentoo ${PN}-${PVR})," \
+		libstuff/Makefile
+
+	eapply_user
+
+	# clean up test suite
+	cd "${S}"/${LD64}/unit-tests/test-cases
+	local c
+
+	# we don't have llvm
+	((++c)); rm -rf llvm-integration;
+
+	# we don't have dtrace
+	((++c)); rm -rf dtrace-static-probes-coalescing;
+	((++c)); rm -rf dtrace-static-probes;
+
+	# a file is missing
+	((++c)); rm -rf eh-coalescing-r
+
+	# we don't do universal binaries
+	((++c)); rm -rf blank-stubs;
+
+	# looks like a problem with apple's result-filter.pl
+	((++c)); rm -rf implicit-common3;
+	((++c)); rm -rf order_file-ans;
+
+	# TODO no idea what goes wrong here
+	((++c)); rm -rf dwarf-debug-notes;
+
+	einfo "Deleted $c tests that were bound to fail"
+
+	cd "${S}"
+	ebegin "cleaning Makefiles from unwanted CFLAGS"
+	find . -name "Makefile" -print0 | xargs -0 sed \
+		-i \
+		-e 's/ -g / /g' \
+		-e 's/"-g /"/g' \
+		-e 's/^G =.*$/G =/' \
+		-e 's/^OFLAG =.*$/OFLAG =/' \
+		-e 's/install -c -s/install/g'
+	eend $?
+}
+
+src_configure() {
+	ENABLE_LTO=0
+	if use lto ; then
+		ENABLE_LTO=1
+
+		LLVM_INCDIR=$(get_llvm_prefix)/include
+		LLVM_LIBDIR=$(get_llvm_prefix)/lib
+
+		[ -n "${LLVM_INCDIR}" -a -n "${LLVM_LIBDIR}" ] || \
+			die "LLVM not found - LTO support can not be enabled"
+
+		# LTO and LLVM support currently both depend only on libLTO being
+		# present. So we can enable both.
+		CCTOOLS_LTO_CFLAGS="-DLTO_SUPPORT -I${LLVM_INCDIR}"
+		CCTOOLS_LLVM_CFLAGS="-DLLVM_SUPPORT -I${LLVM_INCDIR}"
+	fi
+
+	export CTARGET=${CTARGET:-${CHOST}}
+	if [[ ${CTARGET} == ${CHOST} ]] ; then
+		if [[ ${CATEGORY} == cross-* ]] ; then
+			export CTARGET=${CATEGORY#cross-}
+		fi
+	fi
+
+	LIBPATH=/usr/$(get_libdir)/binutils/${CTARGET}/${PV}
+	DATAPATH=/usr/share/binutils-data/${CTARGET}/${PV}
+	if is_cross ; then
+		BINPATH=/usr/${CHOST}/${CTARGET}/binutils-bin/${PV}
+	else
+		BINPATH=/usr/${CTARGET}/binutils-bin/${PV}
+	fi
+
+	export CCTOOLS_CPPFLAGS="${CPPFLAGS}"
+	# CPPFLAGS only affects ld64, cctools don't use 'em (which currently is
+	# what we want). Removed in compile_cctools.
+	append-cppflags -DNDEBUG
+
+	# Create configure.h for ld64 with SUPPORT_ARCH_<arch> defines in it.
+	DERIVED_FILE_DIR=${LD64}/src \
+		${LD64}/src/create_configure
+}
+
+compile_ld64() {
+	einfo "building ${LD64}"
+	cd "${S}"/${LD64}/src
+	emake \
+		LTO=${ENABLE_LTO} \
+		LTO_INCDIR=${LLVM_INCDIR} \
+		LTO_LIBDIR=${LLVM_LIBDIR} \
+		TAPI=1 \
+		TAPI_LIBDIR="${EPREFIX}"/usr/lib
+
+	use test && emake build_test
+}
+
+compile_cctools() {
+	einfo "building ${CCTOOLS}"
+	filter-flags -DNDEBUG
+
+	cd "${S}"/${CCTOOLS}
+	# Suppress running dsymutil because it will warn about missing debug
+	# info which is expected when compiling without -g as we normally do.
+	# This might need some more thought if anyone ever wanted to build us
+	# for debugging with Apple's tools.
+	emake \
+		LIB_PRUNETRIE="-L../../${LD64}/src -lprunetrie" \
+		EFITOOLS= \
+		LTO="${CCTOOLS_LTO_CFLAGS} ${CCTOOLS_LLVM_CFLAGS}" \
+		COMMON_SUBDIRS='libstuff ar misc otool' \
+		SUBDIRS_32= \
+		LEGACY= \
+		RC_ProjectSourceVersion=${CCTOOLS_VERSION} \
+		RC_CFLAGS="${CFLAGS}" \
+		OFLAG="${CCTOOLS_OFLAG}" \
+		DSYMUTIL=": disabled: dsymutil"
+
+	cd "${S}"/${CCTOOLS}/as
+	emake \
+		BUILD_OBSOLETE_ARCH= \
+		RC_ProjectSourceVersion=${CCTOOLS_VERSION} \
+		RC_CFLAGS="-DASLIBEXECDIR=\"\\\"${EPREFIX}${LIBPATH}/\\\"\" ${CFLAGS}" \
+		OFLAG="${CCTOOLS_OFLAG}" \
+		DSYMUTIL=": disabled: dsymutil"
+}
+
+src_compile() {
+	compile_ld64
+	compile_cctools
+}
+
+install_ld64() {
+	exeinto ${BINPATH}
+	doexe "${S}"/${LD64}/src/{ld64,dyldinfo,unwinddump,ObjectDump,objcimageinfo,machocheck}
+	dosym ld64 ${BINPATH}/ld
+	insinto ${DATAPATH}/man/man1
+	doins "${S}"/${LD64}/doc/man/man1/{ld,ld64,dyldinfo,unwinddump}.1
+}
+
+install_cctools() {
+	cd "${S}"/${CCTOOLS}
+	emake install_all_but_headers \
+		EFITOOLS= \
+		COMMON_SUBDIRS='ar misc otool' \
+		SUBDIRS_32= \
+		DSTROOT=\"${D}\" \
+		BINDIR=\"${EPREFIX}\"${BINPATH} \
+		LOCBINDIR=\"${EPREFIX}\"${BINPATH} \
+		USRBINDIR=\"${EPREFIX}\"${BINPATH} \
+		LOCLIBDIR=\"${EPREFIX}\"${LIBPATH} \
+		MANDIR=\"${EPREFIX}\"${DATAPATH}/man/
+	cd "${S}"/${CCTOOLS}/as
+	emake install \
+		BUILD_OBSOLETE_ARCH= \
+		DSTROOT=\"${D}\" \
+		USRBINDIR=\"${EPREFIX}\"${BINPATH} \
+		LIBDIR=\"${EPREFIX}\"${LIBPATH} \
+		LOCLIBDIR=\"${EPREFIX}\"${LIBPATH}
+
+	# upstream is starting to replace classic binutils with llvm-integrated
+	# ones. In Xcode, nm and size are now symlinks to llvm-{nm,size} while the
+	# classic version is preserved as {nm,size}-classic. When asked to do so
+	# by use classic we statically link to the classic version.
+	#   binutils-bin/<version>/<tool>
+	#     -> binutils-bin/<version>/<tool>-classic
+	#
+	# Otherwise we try to find and use the llvm version of the tool. Since our
+	# binutils do not live in the same directory as the llvm installation and
+	# llvm tends to move around, we use a shim that tries to find the llvm
+	# version of the tool in prefix. It will fall back to the classic tool if
+	# it fails.
+	#  binutils-bin/<version>/<tool>
+	#    -> binutils-bin/<version>/llvm-<tool>
+	#    -> $EPREFIX/usr/lib/llvm/<major/bin/llvm-<tool>
+	#    -> $EPREFIX/usr/bin/llvm-<tool>
+	#    -> binutils-bin/<version>/<tool>-classic
+	budir=${D}/${EPREFIX}/${BINPATH}
+	for tool in nm size ; do
+		use classic && \
+			ln -sfn ${tool}-classic "${budir}/${tool}" || \
+			ln -sfn llvm-shim "${budir}/${tool}"
+	done
+
+	# Also, otool is now based on llvm-objdump. But a small wrapper installed
+	# as llvm-otool remains, providing command line compatibility.
+	use classic && \
+		ln -sfn otool-classic "${budir}/otool" || \
+		ln -sfn llvm-otool "${budir}/otool"
+
+	# And finally, although our cctools don't actually contain dsymutil and
+	# objdump, we provide access to the llvm versions of them via the shim to
+	# be in line with Xcode.
+	for tool in objdump dsymutil ; do
+		ln -sfn llvm-shim "${budir}/${tool}"
+	done
+
+	cd "${ED}"${BINPATH}
+	insinto ${DATAPATH}/man/man1
+	local skips manpage
+	# ar brings an up-to-date manpage with it
+	skips=( ar )
+	for bin in *; do
+		for skip in ${skips[@]}; do
+			if [[ ${bin} == ${skip} ]]; then
+				continue 2;
+			fi
+		done
+		manpage=${S}/${CCTOOLS}/man/${bin}.1
+		if [[ -f "${manpage}" ]]; then
+			doins "${manpage}"
+		fi
+	done
+	insinto ${DATAPATH}/man/man5
+	doins "${S}"/${CCTOOLS}/man/*.5
+}
+
+src_test() {
+	if ! [ "${EPREFIX}"/usr/bin/clang ] ; then
+		einfo "Test suite only works properly with clang - please install"
+		return
+	fi
+
+	einfo "Running unit tests"
+	cd "${S}"/${LD64}/unit-tests/test-cases
+	# provide the new ld as a symlink to clang so that -ccc-install-dir
+	# will pick it up
+	ln -sfn ../../src/ld64 ld
+	# use our arch command because the System's will report i386 even for an
+	# x86_64 prefix
+	perl ../bin/make-recursive.pl \
+		BUILT_PRODUCTS_DIR="${S}"/${LD64}/src \
+		ARCH="$(arch)" \
+		LD="${S}"/${LD64}/src/ld64 \
+		CC="${CC} -ccc-install-dir $PWD" \
+		CXX="${CXX} -ccc-install-dir $PWD" \
+		OTOOL="${S}"/${CCTOOLS}/otool/otool.NEW \
+		| perl ../bin/result-filter.pl
+}
+
+src_install() {
+	install_ld64
+	install_cctools
+
+	cd "${S}"
+	insinto /etc/env.d/binutils
+	cat <<-EOF > env.d
+		TARGET="${CHOST}"
+		VER="${PV}"
+		FAKE_TARGETS="${CHOST}"
+	EOF
+	newins env.d ${CHOST}-${PV}
+}
+
+pkg_postinst() {
+	binutils-config ${CHOST}-${PV}
+}


             reply	other threads:[~2020-11-27 15:33 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-27 15:33 Fabian Groffen [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-01-27 14:44 [gentoo-commits] repo/gentoo:master commit in: sys-devel/binutils-apple/ Fabian Groffen
2024-01-16 12:05 Fabian Groffen
2023-07-09 12:20 Fabian Groffen
2023-07-09 11:50 Fabian Groffen
2023-05-29 11:58 Fabian Groffen
2022-12-12 20:13 Fabian Groffen
2022-04-20  6:15 Fabian Groffen
2022-03-29 11:31 Fabian Groffen
2021-01-10 10:05 Fabian Groffen
2021-01-06 15:32 Fabian Groffen
2020-12-31 12:17 Fabian Groffen
2020-12-22 20:25 Fabian Groffen
2020-12-21 17:57 Fabian Groffen
2020-12-21  8:32 Fabian Groffen
2020-12-20 18:47 Fabian Groffen
2020-12-20 16:06 Fabian Groffen
2020-12-19 19:51 Fabian Groffen
2020-12-19 19:07 Fabian Groffen
2019-03-16 14:59 Fabian Groffen
2019-01-28 10:37 Fabian Groffen
2018-12-22 11:02 Fabian Groffen
2018-12-13 10:47 Fabian Groffen
2018-12-13  8:35 Fabian Groffen
2018-12-13  7:28 Fabian Groffen
2018-12-10 14:20 Fabian Groffen
2018-01-04 16:46 Fabian Groffen
2018-01-03 20:52 Fabian Groffen
2018-01-03 20:52 Fabian Groffen
2017-12-29 13:50 Fabian Groffen
2017-09-06 21:00 Michał Górny
2017-02-26 19:06 Fabian Groffen
2017-01-01 13:17 Fabian Groffen
2016-12-22  7:44 Fabian Groffen
2016-12-15 15:01 Fabian Groffen
2016-09-10 14:40 Fabian Groffen
2016-09-10 14:08 Fabian Groffen
2016-07-10 21:59 Patrick Lauer
2016-07-10 17:32 Fabian Groffen
2016-05-20 16:15 Fabian Groffen
2016-05-16 19:11 Fabian Groffen
2016-05-16 15:44 Fabian Groffen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1606491195.6f3826c28e296d98a50d7423c80041c3df0c86cd.grobian@gentoo \
    --to=grobian@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox