sys-devel/multilib-gcc-wrapper: Bump to EAPI=7
authorMichał Górny <mgorny@gentoo.org>
Fri, 22 Jun 2018 12:07:29 +0000 (14:07 +0200)
committerMichał Górny <mgorny@gentoo.org>
Fri, 22 Jun 2018 12:10:08 +0000 (14:10 +0200)
sys-devel/multilib-gcc-wrapper/multilib-gcc-wrapper-0-r2.ebuild [new file with mode: 0644]

diff --git a/sys-devel/multilib-gcc-wrapper/multilib-gcc-wrapper-0-r2.ebuild b/sys-devel/multilib-gcc-wrapper/multilib-gcc-wrapper-0-r2.ebuild
new file mode 100644 (file)
index 0000000..f670a00
--- /dev/null
@@ -0,0 +1,83 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit multilib
+
+DESCRIPTION="Wrappers for gcc tools to be used on non-native CHOSTs"
+HOMEPAGE="https://www.gentoo.org"
+SRC_URI=""
+
+LICENSE="public-domain"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+RDEPEND="sys-devel/gcc:="
+
+S=${WORKDIR}
+
+mkwrap() {
+       einfo " ${2}"
+
+       cat > "${T}"/wrapper <<-_EOF_
+               #!${EPREFIX}/bin/sh
+               exec ${1} $(get_abi_CFLAGS) "\${@}"
+       _EOF_
+
+       newbin "${T}"/wrapper "${2}"
+}
+
+src_install() {
+       local host_prefix=${CHOST}
+       # stolen from sys-devel/gcc-config
+       # TODO: check if all of them actually support $(get_ABI_CFLAGS)
+       local tools=(
+               cpp cc gcc c++ g++ f77 g77 gcj gcjh gdc gdmd gfortran gccgo
+       )
+
+       cd "${EROOT%/}"/usr/bin || die
+       shopt -s nullglob
+
+       # same as toolchain.eclass
+       : ${TARGET_DEFAULT_ABI:=${DEFAULT_ABI}}
+       : ${TARGET_MULTILIB_ABIS:=${MULTILIB_ABIS}}
+       local ABI t e
+       for ABI in $(get_all_abis TARGET); do
+               [[ ${ABI} == ${TARGET_DEFAULT_ABI} ]] && continue
+
+               einfo "Creating wrappers for ${ABI} ..."
+               for t in "${tools[@]}"; do
+                       # look for both plain *-gcc and e.g. *-gcc-4.8.3
+                       # (but avoid *-gcc-nm)
+                       # note: nullglob applied above
+                       for e in ${host_prefix}[-]${t}{,-[0-9]*}; do
+                               local newname=$(get_abi_CHOST)-${e#${host_prefix}-}
+
+                               einfo " ${newname}"
+
+                               cat > "${T}"/wrapper <<-_EOF_
+                                       #!${EPREFIX}/bin/sh
+                                       exec ${e} $(get_abi_CFLAGS) "\${@}"
+                               _EOF_
+
+                               newbin "${T}"/wrapper "${newname}"
+                       done
+               done
+       done
+
+       shopt -u nullglob
+}
+
+pkg_postinst() {
+       if [[ ${ROOT} == / && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+               eselect compiler-shadow update all
+       fi
+}
+
+pkg_postrm() {
+       if [[ ${ROOT} == / && -f ${EPREFIX}/usr/share/eselect/modules/compiler-shadow.eselect ]] ; then
+               eselect compiler-shadow clean all
+       fi
+}