commit:     9a28529d05071e5a0ab00de2e757a49e01e62107
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 19 09:57:30 2014 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Jun 19 09:57:30 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=dev/mgorny.git;a=commit;h=9a28529d

New awesome multilib-gcc-wrapper to play with distcc.

---
 .../multilib-gcc-wrapper-0.ebuild                  | 61 ++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/sys-devel/multilib-gcc-wrapper/multilib-gcc-wrapper-0.ebuild 
b/sys-devel/multilib-gcc-wrapper/multilib-gcc-wrapper-0.ebuild
new file mode 100644
index 0000000..adc2cae
--- /dev/null
+++ b/sys-devel/multilib-gcc-wrapper/multilib-gcc-wrapper-0.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=5
+
+inherit multilib-build
+
+DESCRIPTION="Wrappers for gcc tools to be used on non-native CHOSTs"
+HOMEPAGE=""
+SRC_URI=""
+
+LICENSE=""
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="distcc"
+
+RDEPEND="sys-devel/gcc:="
+
+S=${WORKDIR}
+
+mkwrap() {
+       cat > "${T}"/wrapper <<-_EOF_
+               #!/bin/bash
+               exec ${1} $(get_abi_CFLAGS) "\${@}"
+       _EOF_
+
+       newbin "${T}"/wrapper "${2}"
+}
+
+src_install() {
+       local host_prefix=${CHOST}
+       local tools=( c++ cpp g++ gcc gfortran ) # XXX
+
+       if use distcc; then
+               local distcc_dir=/usr/$(get_libdir)/distcc/bin
+               local distcc_sym_prefix=../../../bin
+               dodir "${distcc_dir}"
+       fi
+
+       create_wrappers() {
+               [[ ${CHOST} == ${host_prefix} ]] && continue
+
+               local t e
+               for t in "${tools[@]}"; do
+                       for e in "${ROOT%/}"/usr/bin/${host_prefix}-${t} \
+                                       
"${ROOT%/}"/usr/bin/${host_prefix}-${t}-[34]*; do
+                               local basename=${e##*/}
+                               local 
newname=${basename/${host_prefix}/${CHOST}}
+
+                               mkwrap "${basename}" "${newname}"
+
+                               if use distcc; then
+                                       dosym "${distcc_sym_prefix}/${newname}" 
\
+                                               "${distcc_dir}/${newname}"
+                               fi
+                       done
+               done
+       }
+       multilib_foreach_abi create_wrappers
+}

Reply via email to