#!/bin/sh # # ccache-config - helper script for ccache and its ebuild # # Copyright 2003-2014 Superlucidity Services, LLC # Copyright 2013-2014 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='@GENTOO_PORTAGE_EPREFIX@' . "${EPREFIX}"/lib/gentoo/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 # Trim the empty dir if possible. #517242 t=${t%/*} if rmdir "${t}" 2>/dev/null; then rmdir "${t%/*}" 2>/dev/null fi : fi } cc_install_link() { # Search the PATH for the specified compiler # then create shadow link in /usr/lib/ccache/bin to ccache if command -v "$1" >/dev/null ; 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++ icc icpc clang clang++ ; do "cc_${1}_link" "${2}${2:+-}${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