diff options
author | Arnout Vandecappelle <arnout@mind.be> | 2015-10-04 16:23:56 +0100 |
---|---|---|
committer | Peter Korsgaard <peter@korsgaard.com> | 2015-10-04 18:22:20 +0200 |
commit | d82f69cf100c51cc65c9fb27132517dd3efd554a (patch) | |
tree | f08ffe5e2b0bb979ade4aa98ff82a2e81c64035b /toolchain/toolchain-wrapper.c | |
parent | 2f8dc29c1d9f2adda850dead5325e422715d251e (diff) |
infra: move ccache handling to the toolchain wrapper
Since we always have a toolchain wrapper now, we can move the ccache
call to the toolchain wrapper.
The hostcc ccache handling obviously stays.
The global addition of ccache to TARGET_CC/CXX is removed, but many
individual packages and infras still add it. This means we have a
chain like this: ccache -> toolchain-wrapper -> ccache -> gcc
However, this is fairly harmless: for cache misses, the inner ccache
just adds overhead and for cache hits, the inner ccache is never
called. Later patches will remove these redundant ccache calls.
As a side effect, perl now supports ccache as well.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Cc: Danomi Manchego <danomimanchego123@gmail.com>
Cc: Károly Kasza <kaszak@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Diffstat (limited to 'toolchain/toolchain-wrapper.c')
-rw-r--r-- | toolchain/toolchain-wrapper.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/toolchain/toolchain-wrapper.c b/toolchain/toolchain-wrapper.c index d4d25c705..aee5df7ac 100644 --- a/toolchain/toolchain-wrapper.c +++ b/toolchain/toolchain-wrapper.c @@ -23,6 +23,9 @@ #include <stdlib.h> #include <errno.h> +#ifdef BR_CCACHE +static char ccache_path[PATH_MAX]; +#endif static char path[PATH_MAX]; static char sysroot[PATH_MAX]; @@ -40,6 +43,9 @@ static char sysroot[PATH_MAX]; #define EXCLUSIVE_ARGS 3 static char *predef_args[] = { +#ifdef BR_CCACHE + ccache_path, +#endif path, "--sysroot", sysroot, #ifdef BR_ABI @@ -147,6 +153,13 @@ int main(int argc, char **argv) perror(__FILE__ ": overflow"); return 3; } +#ifdef BR_CCACHE + ret = snprintf(ccache_path, sizeof(ccache_path), "%s/usr/bin/ccache", absbasedir); + if (ret >= sizeof(ccache_path)) { + perror(__FILE__ ": overflow"); + return 3; + } +#endif ret = snprintf(sysroot, sizeof(sysroot), "%s/" BR_SYSROOT, absbasedir); if (ret >= sizeof(sysroot)) { perror(__FILE__ ": overflow"); @@ -251,7 +264,7 @@ int main(int argc, char **argv) } } - if (execv(path, args)) + if (execv(args[0], args)) perror(path); free(args); |