summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Junghans <ottxor@gentoo.org>2013-09-13 14:25:31 +0000
committerChristoph Junghans <ottxor@gentoo.org>2013-09-13 14:25:31 +0000
commitc73f47d434c38c443af165cb68b5d7093c25228d (patch)
treee29ba45d912e777a0d0009f8ee52ccaa5f06c40a /dev-util/ccache/files
parentrevbump -> EAPI 5, add test invocation, deps for tests. remove old (diff)
downloadgentoo-2-c73f47d434c38c443af165cb68b5d7093c25228d.tar.gz
gentoo-2-c73f47d434c38c443af165cb68b5d7093c25228d.tar.bz2
gentoo-2-c73f47d434c38c443af165cb68b5d7093c25228d.zip
added prefix support (bug #484012)
(Portage version: 2.2.1/cvs/Linux x86_64, signed Manifest commit with key C2000586)
Diffstat (limited to 'dev-util/ccache/files')
-rw-r--r--dev-util/ccache/files/ccache-config-296
1 files changed, 96 insertions, 0 deletions
diff --git a/dev-util/ccache/files/ccache-config-2 b/dev-util/ccache/files/ccache-config-2
new file mode 100644
index 000000000000..406405662458
--- /dev/null
+++ b/dev-util/ccache/files/ccache-config-2
@@ -0,0 +1,96 @@
+#!/bin/sh
+#
+# ccache-config - helper script for ccache and its ebuild
+#
+# Copyright 2003-2013 Superlucidity Services, LLC
+# Copyright 2013 Gentoo Foundation
+# This program licensed under the GNU GPL version 2.
+#
+# This script developed by Zachary T Welch at Superlucidity Services, LLC
+# it was cloned from the distcc-config script
+#
+# Additional features to come; this provides a starting point
+
+EPREFIX=''
+
+. "${EPREFIX}"/etc/init.d/functions.sh 2>/dev/null || {
+ ebegin() { echo " * $* ..."; }
+ eend() {
+ local r=${1:-$?}
+ [ ${r} -eq 0 ] && echo " [ OK ]" || echo " [ !! ]"
+ return $r
+ }
+}
+
+LIBDIR="lib"
+
+# this should be getopt'd someday (override with CC_QUIET=1)
+CC_VERBOSE=1
+unset _CC_QUIET
+c_quiet() {
+ [ -n "${CC_QUIET:-${_CC_QUIET}}" ] || [ -z "${CC_VERBOSE}" ]
+}
+
+c_ebegin() { c_quiet || ebegin "$@" ; }
+c_eend() { c_quiet || eend "$@" ; }
+
+###
+# the following functions manage the ccache symlinks
+# they allow the user or other scripts (namely gcc-config) to
+# automatically update ccache's links when upgrading toolchains
+#
+cc_path() {
+ echo ${ROOT%/}${EPREFIX}/usr/${LIBDIR}/ccache/bin/$1
+}
+cc_remove_link() {
+ local t=$(cc_path "$1")
+ if [ -L ${t} ]; then
+ c_ebegin "Removing ${t}"
+ rm -f "${t}"
+ c_eend
+ fi
+}
+cc_install_link() {
+ # Search the PATH for the specified compiler
+ # then create shadow link in /usr/lib/ccache/bin to ccache
+
+ if [ -n "$(type -p ${1})" ]; then
+ # first be sure any old link is removed
+ _CC_QUIET=1
+ cc_remove_link "${1}"
+ unset _CC_QUIET
+
+ # then create the new link
+ local t=$(cc_path "$1")
+ c_ebegin "Creating ccache shadow link ${t}"
+ mkdir -p -m 0755 "${t%/*}" && ln -s "${EPREFIX}"/usr/bin/ccache "${t}"
+ c_eend
+ fi
+}
+cc_links() {
+ local a
+ for a in gcc cc c++ g++ ; do
+ if [ -n "${2}" ] ; then
+ # gcc-config doesnt install ${CHOST}-cc, so until
+ # it does, don't install a ccache symlink for it
+ [ "${a}" = "cc" ] && continue
+ a="${2}-${a}"
+ fi
+ eval "cc_${1}_link" "${a}"
+ done
+}
+
+###
+# main routine
+
+case "${1}" in
+ --install-links )
+ cc_links install "${2}"
+ ;;
+ --remove-links )
+ cc_links remove "${2}"
+ ;;
+ * )
+ echo "usage: ${0} {--install-links|--remove-links} [ CHOST ]"
+ ;;
+esac