97 lines
2.1 KiB
Bash
97 lines
2.1 KiB
Bash
#!/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 icx icpx 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
|