Contents of /trunk/ccache/ccache-config
Parent Directory | Revision Log
Revision 1618 -
(show annotations)
(download)
Sat Jan 14 01:07:08 2012 UTC (12 years, 8 months ago) by niro
File size: 1790 byte(s)
Sat Jan 14 01:07:08 2012 UTC (12 years, 8 months ago) by niro
File size: 1790 byte(s)
-style updates -do not create CHOST-cc symlink -create ccache libdir -be more multilib friendly
1 | #!/bin/bash |
2 | # |
3 | # ccache-config - helper script for ccache and its ebuild |
4 | # |
5 | # Copyright 2003 Superlucidity Services, LLC |
6 | # This program licensed under the GNU GPL version 2. |
7 | # |
8 | # This script developed by Zachary T Welch at Superlucidity Services, LLC |
9 | # it was cloned from the distcc-config script |
10 | # |
11 | # Additional features to come; this provides a starting point |
12 | |
13 | LIBDIR="lib" |
14 | |
15 | # this should be getopt'd someday (override with CC_QUIET=1) |
16 | CC_VERBOSE=1 |
17 | |
18 | cc_echo() |
19 | { |
20 | [ -z "${CC_QUIET}" -a -n "${CC_VERBOSE}" ] && echo "$*" |
21 | } |
22 | |
23 | ### |
24 | # the following functions manage the ccache symlinks |
25 | # they allow the user or other scripts (namely gcc-config) to |
26 | # automatically update ccache's links when upgrading toolchains |
27 | # |
28 | cc_path() |
29 | { |
30 | echo ${MROOT%/}/usr/${LIBDIR}/ccache/bin/$1 |
31 | } |
32 | |
33 | cc_remove_link() |
34 | { |
35 | local t=$(cc_path "$1") |
36 | if [ -L ${t} ] |
37 | then |
38 | cc_echo "Removing ${t}..." |
39 | rm -f "${t}" |
40 | fi |
41 | } |
42 | |
43 | cc_install_link() |
44 | { |
45 | # Search the PATH for the specified compiler |
46 | # then create shadow link in /usr/lib/ccache/bin to ccache |
47 | |
48 | if [ -n "$(type -p ${1})" ] |
49 | then |
50 | # first be sure any old link is removed |
51 | CC_QUIET=1 cc_remove_link "${1}" |
52 | |
53 | # then create the new link |
54 | local t=$(cc_path "$1") |
55 | cc_echo "Creating ccache shadow link: ${t}..." |
56 | mkdir -p -m 0755 "${t%/*}" && ln -s /usr/bin/ccache "${t}" |
57 | fi |
58 | } |
59 | |
60 | cc_links() |
61 | { |
62 | local a |
63 | for a in gcc cc c++ g++ |
64 | do |
65 | if [ -n "${2}" ] |
66 | then |
67 | # gcc-config doesn't install ${CHOST}-cc, so until |
68 | # it does, don't install a ccache symlink for it |
69 | [ "${a}" = "cc" ] && continue |
70 | a="${2}-${a}" |
71 | fi |
72 | eval "cc_${1}_link" "${a}" |
73 | done |
74 | } |
75 | |
76 | ### |
77 | # main routine |
78 | |
79 | case "${1}" in |
80 | --install-links ) |
81 | cc_links install "${2}" |
82 | ;; |
83 | --remove-links ) |
84 | cc_links remove "${2}" |
85 | ;; |
86 | * ) |
87 | echo "usage: ${0} {--install-links|--remove-links} [ CHOST ]" |
88 | ;; |
89 | esac |